KNN最优k的选取【学习曲线】

本文探讨了如何选择KNN算法的最佳k值,通过参数学习曲线和K折交叉验证的方法。介绍了K折交叉验证的工作原理,强调了随机种子对模型稳定性的影响,并提供了带交叉验证的学习曲线代码实操,包括数据归一化的概念和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

怎样选择一个最佳的 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
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值