Python简单实现KNN算法及绘图练习

时间:2021-02-03 21:25:01
# encoding:utf-8
# 导入模块,具体情况详见http://blog.csdn.net/zhili8866/article/details/52980924
#以下注释部分是rcParams.py中的代码,由于同时下载了PyQt4和PyQt5,运行时默认使用的是PyQt5,sip库的版本未达到要求,因此使用PyQt4
# import matplotlib
# sip库用于自动生成Python与C、C++库的绑定
#def a():
# matplotlib.rcParams['backend'] = "Qt4Agg"

import sys
sys.path.append('../')
import Figure.rcParams
Figure.rcParams.a()

import numpy as np
from sklearn.neighbors import NearestNeighbors
import matplotlib.pyplot as plt

X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
nbrs = NearestNeighbors(n_neighbors=3, algorithm='ball_tree').fit(X)
print nbrs
distances, indices = nbrs.kneighbors(X)
# indices表示最近点的下标,从0开始;distances表示和最近点之间的距离,点的本身也是其最近点
print distances, indices
# 0表示不是最近点,1表示最近点
print nbrs.kneighbors_graph(X).toarray()

# 画图显示结果
# 设置坐标轴取值范围
plt.ylim((-3,3))

# 设置坐标轴位置,原点重合
ax=plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
plt.scatter([-1, -2, -3, 1, 2, 3], [-1, -1, -2, 1, 1, 2], c='r', marker='*')

from matplotlib.patches import Circle

cir1 = Circle(xy = (1, 1), radius=2.23606798, alpha=0.5,color='y')
ax.add_patch(cir1)

plt.show()

Python简单实现KNN算法及绘图练习