本文转自本人公众号,以后技术类文章以CSDN为主,微信同步更新链接
最近报名参加了一个机器学习的训练营,是由大佬崔神和Kaggle大牛联合举办的,旨在于学习掌握机器学习的根本原理,编程语言只是一个工具,对于高数、线代要求较高,自己一方面跟着大佬学习,另一方面也看了看相关参考书,结合Python进行机器学习,作为新手,好多术语都不太了解,如题目所言,本文重在于讲述K最近邻算法在Python中的应用。
何为K最近邻算法呢,通俗点将,近朱者赤近墨者黑,而K就是最近邻的个数。
#导入数据集生成器
from sklearn.datasets import make_blobs
#导入KNN分类器
from sklearn.neighbors import KNeighborsClassifier
# 导入画图工具
import matplotlib.pyplot as plt
# 导入数据集拆分工具
from sklearn.model_selection import train_test_split
# 生成样本数为200,分类为2,随机种子为8的数据集
data = make_blobs(n_samples=200,centers=2,random_state=8)
X,y = data
# 将生成的数据集进行可视化
plt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.spring,edgecolors='k')
plt.show()
在这段代码中,我们用scikit-learn的make_blobs函数生成了一个样本数量为200,分类数量为2的数据集,并赋值给X,y,其中二者皆为矩阵,y的数值均为0和1,代表两类,结果如图所示:
这是我们自己生成的数据,我们腰通过K最近邻算法对新的数据进行分类,也就是回归。
import numpy as np
clf = KNeighborsClassifier()
clf.fit(X,y)
x_min,x_max = X[:,0].min() - 1,X[:,0].max() + 1
y_min,y_max = X[:,1].min() - 1,X[:,1].max() + 1
xx,yy = np.meshgrid(np.arange(x_min,x_max,.02),
np.arange(y_min,y_max,.02))
Z = clf.predict(np.c_[xx.ravel(),yy.ravel()])
Z = Z.reshape(xx.shape)
plt.pcolormesh(xx,yy,Z,cmap=plt.cm.spring)
plt.scatter(X[:,0],X[:,1