查看neighbors大小对K近邻分类算法预测准确度和泛化能力的影响
代码:
1 # -*- coding: utf-8 -*- 2 """ 3 Created on Thu Jul 12 09:36:49 2018 4 5 @author: zhen 6 """ 7 """ 8 分析n_neighbors的大小对K近邻算法预测精度和泛化能力的影响 9 """ 10 from sklearn.datasets import load_breast_cancer 11 12 from sklearn.model_selection import train_test_split 13 14 from sklearn.neighbors import KNeighborsClassifier 15 16 import matplotlib.pyplot as plt 17 18 cancer = load_breast_cancer() 19 20 x_train, x_test, y_train, y_test = train_test_split( 21 cancer.data, cancer.target, stratify=cancer.target, random_state=66) 22 23 training_accuracy = [] 24 25 test_accuracy = [] 26 27 # n_neighbors取值从1~10 28 neighbors_settings = range(1, 11) 29 30 for n_neighbors in neighbors_settings: 31 # 构建模型 32 clf = KNeighborsClassifier(n_neighbors=n_neighbors) 33 clf.fit(x_train, y_train) 34 # 记录训练集精度S 35 training_accuracy.append(clf.score(x_train, y_train)) 36 # 记录泛化能力 37 test_accuracy.append(clf.score(x_test, y_test)) 38 39 plt.plot(neighbors_settings, training_accuracy, label="training accuracy") 40 plt.plot(neighbors_settings, test_accuracy, label="test accuracy") 41 42 plt.xlabel("n_neighbors") 43 plt.ylabel("Accuracy") 44 45 plt.legend()
结果:
总结:在仅考虑单一近邻时,训练集上的预测结果十分完美(接近100%)。但随着邻居个数的增多,模型变得更简单(泛化能力越好),训练集精度也随之下降。为求得较好的预测精度和泛化能力,最佳性能在neighbors为6左右!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架