怎样选择一个最佳的 k呢?
在这里我们要使用机器学习中的神器:参数学习曲线。
参数学习曲线是一条以不同的参数取值为横坐标,不同参数取值下的模型结果为纵坐标的曲线
# 1. 导入所需要的模块和库
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
# 2. 建立数据集
data = load_breast_cancer()
X = data.data
y = data.target
X_train,X_test,y_train,y_test = train_test_split(X,y,# 特征和标签
test_size=0.3,random_state=420) # 测试集所占的比例
# 3. 绘制学习曲线
# 设置两个列表保存生成的评估结果
train_score_list = []
test_score_list = []
# 循环不断改变k值, 重新建模, 重新训练, 然后评估
# k = 1- 20
for k in range(1, 21):
# 实例化
knn = KNeighborsClassifier(n_neighbors=k)
# 采用训练集进行训练
knn.fit(X_train, y_train)
# 评估模型
# 可以评估模型在训练集上的表现情况
train_score_list.append(knn.score(X_train, y_train))
# 评估在测试集上的表现情况
test_score_list.append(knn.score(X_test, y_test))
# 4. 绘制成折线图
plt.figure(dpi=200)
plt.plot(range