nhk,尼玛搜,大唐情史-raybet雷竞技官网_raybet雷竞技_newbee雷竞技

频道:体育世界 日期: 浏览:139

【火炉炼AI】机器学习030-KNN分类器模型的构建

【火炉炼AI】机器学习030-KNN分类器模型的构建

(本文所运用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 )

KNN(K-nearest neighbors)是用K个最近邻的练习数据集来寻觅不知道目标分类的一种算法。其根本的中心思想在我的上一篇文章中介绍过了。

1. 预备数据集

此处我的数据集预备包含数据加载和数据可视化,这部分比较简略,nhk,尼玛搜,大唐情史-raybet雷竞技官网_raybet雷竞技_newbee雷竞技曾经文章中运用了屡次,直接看数据分布图。

2. 构建KNN分类器模型

2.1 KNN分类器模型的构建和练习

构建KNN分类器模型的办法和SVM,RandomForest的办法类似,代码如下:


# 构建KNN分类模型
from sklearn.neighbors import KNeighborsClassifier
K=10 # 暂定10个最近样本
KNN=KNeighborsClassifier(K,weights='dista李志蛟nce')
KNN.fit(dataset_X,dataset_y) # 运用该数据集练习模型
仿制代码

上面运用数据集练习了这个KNN模型,可是咱们怎样知道该模型的练习作用了?下面制作了分类模型在练习数据集上的分类作用,从鸿沟上来看,该分类器比较明晰的将这个数据集区别开来。

2.1 用练习好的KNN分类器猜测新样本

直接上代码:


# 用练习好nhk,尼玛搜,大唐情史-raybet雷竞技官网_raybet雷竞技_newbee雷竞技的KNN模型猜测新样本
new_sample=np.ar安王李承道ray([[4.5,3.6]])
predicted=KNN.predict(new_sample)[0]
print("KNN predicted:{}"汪涵暗讽韩庚罢录林青霞回想刘文正.fo孤寂山村rmat(predicted))
仿制代码

得到的成果是2,表明该新样本归于第2类。

下面咱们将这个新样本制作到图中,看看它在图中的方位。

为了制作新样好色的本和其周围的K个样本的方位,我修改了上面的plot_classifier函数,如下为代码:

# 为了检查新样本在原数据会集的方位,也为了检查新样本周围最近的K个样本方位,
# 我修改了上面的plot_classifier函数,如下所示:
def plot_贝露芙classifier2(KNN_classifier, X, y,new_sample,K):
x_min, x_max = min(X[:, 0]) - 1.0, max(X[:, 0]) + 1.0 # 核算图中坐标的规模
y_min, y_max = min(X[:, 1]) - 1.0, max(X[:, 1]) + 1.0
step_size = 0.01 # nhk,尼玛搜,大唐情史-raybet雷竞技官网_raybet雷竞技_newbee雷竞技设置step size
x_values, y_values丁大大 = np.meshgrid(np.arange(x_min, x_max, step_size),
np.arange(y_min, y_max, step_size))
#漂流瓶文爱 构建网格数据
mesh_output = KNN_classifier.predict(np.c_[x_va美琪琳lues.ravel(), y_values.ravel()])
mesh_output = mesh_output.reshape(x_value赵静娜s.shape)
p吮乳lt.figure()
plt.pcolormesh(担担鸡x_values, y_values, m热辣文esh_output, cmap=plt.cm.gray)
plt.scatter(X[:, 0], X[:, 1], c=y, s=80, edgecolors='black',
linewidth=1, cmap=plt.cm.Paired)
# 制作新样本地点的方位
plt.scatter(ne乡村王妈妈w_sample[:,0],new_sample[:,1],marker='*',color='red')
# 制作新样本周围最近的K个样本,只适用于KNN
# Extract k nearest neighbors
dist, indices = KNN_classifier.kneighbors(new_sample)
plt.scatter(dataset_X[indices][0][:][:,0],dataset_X[indices][0][:][:,1],
marker='x',s=80,color='r')
# specify the boundaries of the figure
plt.xlim(x_values.min(), nhk,尼玛搜,大唐情史-raybet雷竞技官网_raybet雷竞技_newbee雷竞技x_values.max())
plt.ylim(y_values.min()nhk,尼玛搜,大唐情史-raybet雷竞技官网_raybet雷竞技_newbee雷竞技, y_values.max())
# specify the ticks on the X and Y axes
plt.xticks((np.arange(int(min(X[:, 0])), int(maxnhk,尼玛搜,大唐情史-raybet雷竞技官网_raybet雷竞技_newbee雷竞技(X[:王聚民, 0])), 1.0)))
plt.yticks((np.arange(int(min(X[:, 1])), int(max(X[:, 1])), 1.0)))
plt.show()
仿制代码

直接代入运转后得到成果图:

从图中可晁艺伦以看出,赤色的五角星是咱们的新样本,而赤色的叉号表明与其最近的K个街坊。能够看出,这些街坊中的大多数都坐落第二个类别中,故而新样本也被划分到第二个类比,经过predict得到的成果也是2。

###############张女珍#########小**********结#################彦崽儿##############

1,构建和练习KNN分类器十分简略,只需求用sklearn导入KNNClassifier,然后用fit()函数即可。

2,KNN分类器存储了一切可用的练习集数据点,在新的数据点需求猜测时,首要核算该新数据点和内部存储的一切数据点的类似度(也便是间隔),并对该间隔排序,获取间隔最近的K个数据点,然后判别这K个数据点的大多数归于哪一个类别,就以为该新数据点归于哪一个类别。这也解说了为什么K一般取奇数,要是偶数,得到两个类别的数据点个数都持平,那就为难了。

3,KNnhk,尼玛搜,大唐情史-raybet雷竞技官网_raybet雷竞技_newbee雷竞技N分类器的难点是寻觅最合适的K值,这个需求用穿插验证来重复测验,选用具有最大准确率或召回率的K作为最佳K值,这个进程也能够选用GridSearch或RandomSearch来完结。

#################################################################

注:本部分代码现已悉数上传到(我的github)上,欢迎下载。

参考资料:

1, Python机器学习经典实例,Prateek Joshi著,陶豪杰,陈小莉译