内容简介:最近邻(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进行语义分割
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Ruby for Rails
David Black / Manning Publications / 2006-05-11 / USD 44.95
What's Inside * How Ruby and Rails work, separately and together * Extensive Ruby language tutorial * Ruby techniques for Rails applications * Explore the Rails framework source code A new level of pr......一起来看看 《Ruby for Rails》 这本书的介绍吧!
HTML 编码/解码
HTML 编码/解码
SHA 加密
SHA 加密工具