k近邻算法
即距离我们选中中心点距离最近的k个点
scikit-learn中所有的机器学习模型都在各自的类中实现,这些类被称为Estimator类。k近邻分类算法是在neighbors模块的KNeighborsClassifier类中实现的。我们需要将这个类实例化为一个对象,然后才能使用这个模型。
1、这时我们需要设置模型的参数。KNeighborsClassifier最重要的参数就是邻居的数目,这里我们设为1
from sklearn.neighbors import KNeighborsClassifier knn=KNeighborsClassifier(n_neighbors=1)#设置邻居的数目为1 #knn封装了训练数据构建模型的算法、对新数据点进行预测的算法、算法从训练数据中提取的信息 #对于KNeighborsClassifier,里面只保存了训练集 knn.fit(X_train, y_train)#调用knn对象的fit方法,输入numpy数组,训练数据、训练标签。
2、使用模型做出预测
X_new=np.array([[5,2.9, 1, 0.2]])#注意scikit-learn的输入数据必须是二维数组
print("X_new.shape:{}".format(X_new.shape))
3、调用knn对象的predict方法来预测
prediction = knn.predict(X_new)#调用knn.predict预测新数据的标签
print("Prediction:", prediction)#打印预测新数据的类别
print("Predicted target name:",
iris_dataset['target_names'][prediction])#打印新数据预测的类别名字
4、对模型做出评估
对模型做出评估是重要的,因为我们无法预测我们的模型是否准确,而我们也不知道样本的实际品种。
我们可以通过计算精度(accuracy)来衡量模型的优劣,精度就是品种预测正确的花所占的比例
y_pred=knn.predict(X_test)#输入之前分出来的测试集X_test,对其进行预测
print("Test set predictions:n{}".format(y_pred))#输出预测结果
print("Test set score:{:.3f}".format(np.mean(y_pred==y_test)))#np.mean函数输出两个矩阵/数组的相似程度
相关np.mean可以看这个链接。
http://t.csdn.cn/301al
我们还可以使用knn对象的score方法来计算测试集的精度
print("Test set score:{:.2f}".format(knn.score(X_test, y_test)))#使用knn对象的score方法打印测试集的精度
5、总结
X_train, X_test, y_train, y_test=train_test_split(
iris_dataset['data'], iris_dataset['target'], random_state=0)#进行伪随机分成测试集与训练集
knn=KNeighborsClassifier(n_neighbors=1)#设置k近邻算法的k=1
knn.fit(X_train, y_train)#将训练集引入调用knn对象的fit方法,输入numpy数组,训练数据、训练标签。
y_pred=knn.predict(X_test)
print("Test set predictions:n{}".format(y_pred))
print("Test set score:{:.3f}".format(np.mean(y_pred==y_test)))#np.mean函数输出两个矩阵/数组的相似程度
print("Test set score:{:.2f}".format(knn.score(X_test, y_test)))#使用knn.score打印精度
以上代码最重要的是
knn.fit#构建模型
knn.predict#预测模型的输出
knn.score#来评估模型的精度
它们是监督学习模型中最常用的接口。
6、附加
k近邻算法
预先了解
距离:
Lp距离(闵可夫斯基距离)
度量有序特征,包括数值和可以转换为数值进行度量的非数值。
如小学,高中可以转化为0,1.。。。。。
http://t.csdn.cn/tSyHehttp://t.csdn.cn/tSyHe
- L₁曼哈顿距离:坐标绝对值之和
- L₂欧氏距离:坐标平方根号
- L(无穷)切比雪夫距离:max{坐标和}如何计算簇中心
VDM距离
http://t.csdn.cn/xxmTxhttp://t.csdn.cn/xxmTx
表示难以转换为数值而直接度量的数值
VDM距离刻画的是特征取值在各簇的分布差异。
混合加权距离
余弦相似度
刻画两个向量之间的夹角,适合于与向量方向相关的距离度量点。
分别计算每个点与簇中心的距离,然后取平均值继续求出新的簇中心,开始新一轮的迭代。
http://t.csdn.cn/H8ZtShttp://t.csdn.cn/H8ZtS先行了解
k-mean
k-medain
k-modist
k-二分
k-mediods



