赞
踩
1、将整个数据集用于训练和测试
① 通过sklearn自带数据包加载iris数据
from sklearn import datasets
iris = datasets.load_iris()
x = iris.data
y = iris.target
② 模型调用
from sklearn.neighbors import KNeighborsClassifier
knn_5 = KNeighborsClassifier(n_neighbors=5)
knn_5.fit(x,y)
y_pred = knn_5.predict(x)
print(y_pred)
print(y_pred.shape)
结果:
③ 准确率计算
from sklearn.metrics import accuracy_score
# 计算k=5时的准确率
print(accuracy_score(y,y_pred))
# 计算k=1时的准确率
knn_1 = KNeighborsClassifier(n_neighbors=1)
knn_1.fit(x,y)
y_pred = knn_1.predict(x)
print(accuracy_score(y,y_pred))
结果:
2、分离训练数据与测试数据
① 分离数据,分成四个部分,分别时训练输入数据、预测输入数据、训练的结果、预测的结果
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.4)
② 分离后数据的维度确认
print(x_train.shape,x_test.shape,y_train.shape,y_test.shape)
结果:
③ 分离后数据集的训练与评估
knn_5_s = KNeighborsClassifier(n_neighbors=5)
knn_5_s.fit(x_train,y_train)
y_train_pred = knn_5_s.predict(x_train)
y_test_pred = knn_5_s.predict(x_test)
# 分离后模型预测的准确率
print(accuracy_score(y_train,y_train_pred))
print(accuracy_score(y_test,y_test_pred))
结果:
④ 令k:1-25,遍历所有有可能的参数组合
k_range = list(range(1,26))
print(k_range)
score_train = []
score_test = []
for k in k_range:
knn = KNeighborsClassifier(n_neighbors = k)
knn.fit(x_train,y_train)
y_train_pred = knn.predict(x_train)
y_test_pred = knn.predict(x_test)
score_train.append(accuracy_score(y_train,y_train_pred))
score_test.append(accuracy_score(y_t
for k in k_range:
print(k,score_train[k-1])
for k in k_range:
print(k,score_test[k-1])
结果:
⑤ 图像直观展示
# 图形展示
# 导入Matplotlib图库并使用图像在notebook中展示
import matplotlib.pyplot as plt
%matplotlib inline
# 展示k值与训练数据集预测准确率之间的关系
plt.plot(k_range,score_train)
plt.xlabel('K(KNN model)')
plt.ylabel('Training Accuracy')
# 展示k值与测试数据集预测准确率之间的关系
plt.plot(k_range,score_test)
plt.xlabel('K(KNN model)')
plt.ylabel('Training Accuracy')
结果:
⑥ 对新数据进行预测
从图像上可知,k=11时复杂度较小且准确率较高,选择k=11进行预测
knn_11 = KNeighborsClassifier(n_neighbors=11)
knn_11.fit(x_train,y_train)
y_train_pred = knn_11.predict([[1,2,3,4]])
print(y_train_pred)
结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。