内容简介:最近邻(KNN)是一种非常简单、易于理解、通用性强的机器学习算法,广泛应用于金融、医疗、政治、手写检测、图像识别、视频识别等领域。在信用评级中,金融机构会预测客户的信用评级。在贷款支付中,银行机构将预测贷款是否安全或有风险。在政治学中,将潜在选民分为两类,要么投票,要么不投票。上一篇《由于Scikit-Learn包中已经封装好了相应的方法,所以使用起来非常的简单。具体代码如下:使用KNN遇到的最大问题和使用K-Means类似,就是怎么确定K值,常见的方法主要是Grid Search。简单的说就是遍历K值,
最近邻(KNN)是一种非常简单、易于理解、通用性强的机器学习算法,广泛应用于金融、医疗、政治、手写检测、图像识别、视频识别等领域。在信用评级中,金融机构会预测客户的信用评级。在贷款支付中,银行机构将预测贷款是否安全或有风险。在政治学中,将潜在选民分为两类,要么投票,要么不投票。上一篇《 K-近邻算法KNN学习笔记 》主要讲解的是KNN的理论内容,今天主要学习怎么用KNN进行实战。
使用Scikit-Learn进行分类预测
由于Scikit-Learn包中已经封装好了相应的方法,所以使用起来非常的简单。具体代码如下:
定义数据: # 定义特征变量 weather = ['Sunny','Sunny','Overcast','Rainy','Rainy','Rainy','Overcast','Sunny','Sunny', 'Rainy','Sunny','Overcast','Overcast','Rainy'] temperature = ['Hot','Hot','Hot','Mild','Cool','Cool','Cool','Mild','Cool','Mild','Mild','Mild','Hot','Mild'] # 定义分类标签 play=['No','No','Yes','Yes','Yes','No','Yes','No','Yes','Yes','Yes','Yes','Yes','No'] # 将特征变量和分类标签数值化 from sklearn import preprocessing le = preprocessing.LabelEncoder() weather_encoded=le.fit_transform(weather) temperature_encoded=le.fit_transform(temperature) # 整合特征变量 features=list(zip(weather_encoded,temperature_encoded)) label=le.fit_transform(play) 生成模型并预测 from sklearn.neighbors import KNeighborsClassifier model = KNeighborsClassifier(n_neighbors=3) model.fit(features,label) predicted= model.predict([[0,2]]) # 0:Overcast, 2:Mild print(predicted)
使用Grid Search确定K值
使用KNN遇到的最大问题和使用K-Means类似,就是怎么确定K值,常见的方法主要是Grid Search。简单的说就是遍历K值,然后再计算评分,去评分最好的值作为最终选择。
这里我们使用Scikit-Learn自带的葡萄酒数据集,该数据是对意大利同一地区种植的三种不同品种葡萄酒进行化学分析的结果。这项分析确定了三种葡萄酒中每种葡萄酒中13种成分的含量。该数据库包括13个特征和一个目标(品种类型)。品种类型包括:’0类’、’1类’和’2类’。
from sklearn import datasets wine = datasets.load_wine() print(wine.feature_names) #获取特性向量名称 print(wine.target_names) #获取分类标签名称 print(wine.data[0:5]) #查看特征向量数据 print(wine.target) #查看分类标签数据 print(wine.data.shape) print(wine.target.shape) from sklearn.model_selection import train_test_split # 将数据划分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(wine.data, wine.target, test_size=0.3) # 70% training and 30% test import numpy as np from sklearn.neighbors import KNeighborsClassifier neighbors = np.arange(1,10) train_accuracy =np.empty(len(neighbors)) test_accuracy = np.empty(len(neighbors)) for i,k in enumerate(neighbors): knn = KNeighborsClassifier(n_neighbors=k) knn.fit(X_train, y_train) train_accuracy[i] = knn.score(X_train, y_train) #使用训练集测试准确率 test_accuracy[i] = knn.score(X_test, y_test) #使用测试集测试准确率 import matplotlib.pyplot as plt %matplotlib inline plt.title('k-NN Varying number of neighbors') plt.plot(neighbors, test_accuracy, label='Testing Accuracy') plt.plot(neighbors, train_accuracy, label='Training accuracy') plt.legend() plt.xlabel('Number of neighbors') plt.ylabel('Accuracy') plt.show()
所以在本例中,K选择1是最合适的。(多次执行此代码,发现最后生成的图片不一致,原因是随机划分数据导致的)
参考链接: https://www.datacamp.com/community/tutorials/k-nearest-neighbor-classification-scikit-learn
以上所述就是小编给大家介绍的《使用 Scikit-learn 的进行 KNN 分类》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 流程篇 | 避免 evalString 进行回调,使用 JSB 进行手动绑定
- 使用python进行短信轰炸
- 使用 Docker 进行交叉编译
- 使用 Gomock 进行单元测试
- 使用容器Docker进行开发
- 使用DeepLab进行语义分割
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
文明之光 (第三册)
吴军 / 人民邮电出版社 / 2015-1-1 / 59
【《文明之光》系列荣获由中宣部、中国图书评论学会和中央电视台联合推选的2014“中国好书”奖】 吴军博士从对人类文明产生了重大影响却在过去被忽略的历史故事里,选择了有意思的几十个片段特写,以人文和科技、经济结合的视角,有机地展现了一幅人类文明发展的宏大画卷。 《文明之光 》系列大致按照从地球诞生到近现代的顺序讲述了人类文明进程的各个阶段,每个章节相对独立,全景式地展现了人类文明发展历程......一起来看看 《文明之光 (第三册)》 这本书的介绍吧!