机器学习入门(四)KNN算法实例

#机器学习入门(四)KNN算法实例
#作者:冯德平(山野雪人)
#参考资料1给出了很好的实例,并用手工计算了预测分类的方法,
#本文用库来实现这一预测方法,并给出精度分析的结果。
#文末附上了本文用到的文本文件

# -*- coding: utf-8 -*-
#导入pandas和numpy
import pandas as pd
import numpy as np
#导入KNN分类器
from sklearn.neighbors import KNeighborsClassifier
#导入数据集拆分工具(训练与测试集)
from sklearn.model_selection import train_test_split

dataframe=pd.read_csv(r'D:\temp\film.txt', delim_whitespace=True,encoding="utf-8")
#delim_whitespace=True 文件特征值是以空格隔开的用这句,以逗号分开的这句可以省略
#encoding="utf-8" #读取中文,我的pandas版本为: 1.3.0,可以省略这句
array=dataframe.values  #读入到数组中,values的用法详见后面的参考资料2
X=array[:,2:5]     #读取特征值
y=array[:,5]       #读取标签值(分类值)
#print('特征值:',X)
#print('标签值(分类值):',y)

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=2003)  #拆分数据
clf = KNeighborsClassifier(n_neighbors=5)    #k=5
clf.fit(X_train, y_train)     #拟合数据
print('---------------------------')
print('新数据点的分类是',clf.predict(np.c_[(23,3,17)]))   #预测数据
correct = np.count_nonzero((clf.predict(X_test)==y_test)==True)  #总体精度  
print ("总体精度为: %.1f" %(correct/len(X_test)*100)+'%')

#参考资料:
#1 K最近邻算法(KNN):
#https://blog.csdn.net/saltriver/article/details/52502253
#2 dataframe.values的用法:
#https://pandas.pydata.org/pandas-docs/version/0.23/generated/pandas.DataFrame.values.html

‘’’
输出结果:
新数据点的分类是 [‘喜剧片’]
总体精度为: 100.0%

本文用到的文件film.txt内容(将本文件放到D:\temp):

序号	电影名称	搞笑镜头	拥抱镜头	打斗镜头	电影类型
1. 	宝贝当家	45	2	9	喜剧片
2. 	美人鱼	21	17	5	喜剧片
3. 	澳门风云3	54	9	11	喜剧片
4. 	功夫熊猫3	39	0	31	喜剧片
5. 	谍影重重	5	2	57	动作片
6. 	叶问3	3	2	65	动作片
7. 	伦敦陷落	2	3	55	动作片
8. 	我的特工爷爷	6	4	21	动作片
9. 	奔爱	7	46	4	爱情片
10. 	夜孔雀	9	39	8	爱情片
11. 	代理情人	9	38	2	爱情片
12. 	新步步惊心	8	34	17	爱情片

‘’’
#用于预测的数据(不包含在film.txt文件中):
#唐人街探案 23 3 17 ?

你可能感兴趣的:(机器学习,算法,人工智能,python)