前半部分是简介, 后半部分是案例
KNN近邻算法:
简单说就是采用测量不同特征值之间的距离方法进行分类(k-Nearest Neighbor,KNN)
优点: 精度高、对异常值不敏感、无数据输入假定
缺点:时间复杂度高、空间复杂度高
适用数据范围:
工作原理:
1 import numpy as np 2 import pandas as pd 3 from pandas import Series,DataFrame 4 import matplotlib.pyplot as plt 5 %matplotlib inline 6 # 以上导入的包都是自己习惯性导入, 因为随时都可能会用到, 就每次先把这些都导入了 7 8 #这儿是我自己写了一个excel表格,方便快速的读取数据, 演示使用, 就不用series或者dataframe写了 9 film = pd.read_excel(‘films.xlsx‘,sheet_name=1) 10 #输入film后出现表格 11 fil
1 # 电影的样本特征 2 train=film[[‘动作镜头‘,‘接吻镜头‘]] 3 # 样本标签,即要预测的标签,这儿要预测新数据是属于什么类别的电影 4 target=film[‘电影类别‘] 5 # 创建机器学习模型,需要导入 6 from sklearn.neighbors import KNeighborsClassifier 7 # 创建对象, 这儿的数据因为是离散型, 所以使用KNeighborsClassifier, 8 knn=KNeighborsClassifier() 9 # 对knn模型进行训练, 传入样本特征 和 样本标签 10 # 构建函数原型、构建损失函数、求损失函数最优解 11 knn.fit(train,target) 12 knn
当输入knn后出现如下代码, 表示训练完成
1 KNeighborsClassifier(algorithm=‘auto‘, leaf_size=30, metric=‘minkowski‘, 2 metric_params=None, n_jobs=1, n_neighbors=5, p=2, 3 weights=‘uniform‘)
1 # 这儿随意写3个样本数据,需要按照样本数据的维度来写 2 cat=np.array([[5,19],[21,6],[23,24]]) 3 # cat=np.array([[21,4]]) 也可以写1个 4 # 使用predict函数对数据进行预测 5 knn.predict(cat)
运行会出现下图:
预测完成 ! 成功判断出3个新样本的归属类别
接下来也可以绘制图, 直观的查看近邻情况
1 # scatter画出来的是散点图, 取数据使用 .values,二维数组中, 一维全部取出, 二维取0,表示出来就是[:,0] 2 plt.scatter(train.values[:,0],train.values[:,1]) 3 # scatter可以有一些属性, 下边的color可以自定义显示的颜色 4 plt.scatter(cat[:,0],cat[:,1],color=‘red‘)
效果图为:
在使用KNN近邻算法时, 注意要分清楚样本集, 样本特征,样本标签
技术交流可以留言评论哦 ! 虚心学习, 不忘初心, 共同奋进 !
原文:https://www.cnblogs.com/wylycool/p/9275576.html