当前位置: 首页 > wzjs >正文

网站下载图标安徽省徽工建设集团网站

网站下载图标,安徽省徽工建设集团网站,网站上传在空间哪里,中小企业建立网站最经济的方式✅ 今日目标 理解 KNN 的原理与“以邻为近”的思想掌握 K 值选择与模型效果的关系学会使用 sklearn 训练 KNN 模型实现 KNN 分类 模型评估 超参数调优 📘 一、KNN 算法原理 KNN(K-Nearest Neighbors)核心思想: 给定一个待预测…

✅ 今日目标

  • 理解 KNN 的原理与“以邻为近”的思想
  • 掌握 K 值选择与模型效果的关系
  • 学会使用 sklearn 训练 KNN 模型
  • 实现 KNN 分类 + 模型评估 + 超参数调优

📘 一、KNN 算法原理

KNN(K-Nearest Neighbors)核心思想:

给定一个待预测样本,找到训练集中“距离它最近”的 K 个样本,用这些样本的类别进行多数投票预测。

特点描述
模型类型懒惰学习(无显式训练过程)
距离度量欧几里得距离(默认)或自定义
参数调优K 值、距离函数、权重方式
适用场景数据量不大,维度不高,需快速建模时

🧪 二、KNN 分类流程(代码实践)

from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 生成数据
X = [[1], [2], [3], [10], [11], [12]]
y = [0, 0, 0, 1, 1, 1]# 训练测试划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)# 建模
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)
print("准确率:", accuracy_score(y_test, y_pred))

🧠 三、K 值选择对模型的影响

K 值模型表现
K 太小模型过拟合,受噪声影响大
K 太大模型过于平滑,泛化能力下降
一般建议使用奇数,避免投票平局;通过交叉验证选择最佳 K

🔧 四、模型调参建议(使用 GridSearchCV)

from sklearn.model_selection import GridSearchCVparam_grid = {'n_neighbors': list(range(1, 11))}
grid_search = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5)
grid_search.fit(X_train, y_train)print("最优K值:", grid_search.best_params_)
print("最佳准确率:", grid_search.best_score_)

🧾 今日总结

技能工具
快速建模KNeighborsClassifier
评估效果accuracy_score()
参数调优GridSearchCV()
可视化分类边界使用 matplotlibseaborn

🧪 建议练习脚本

  • 使用 sklearn 中的 KNN 模型实现学生是否及格分类

  • 尝试多种 K 值进行训练,并绘制准确率变化图

  • 使用 GridSearchCV 找出最优 K

  • 可视化分类边界(二维特征时)

    # KNN 分类实战演示:学生是否及格预测from sklearn.datasets import make_classification
    from sklearn.model_selection import train_test_split, GridSearchCV
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.metrics import accuracy_score, classification_report
    import matplotlib.pyplot as plt
    import pandas as pd
    import numpy as npplt.rcParams['font.family'] = 'Arial Unicode MS'  # Mac 用户可用
    plt.rcParams['axes.unicode_minus'] = False
    # 1. 模拟学生成绩数据(两个特征:成绩 + 性别)
    np.random.seed(42)
    size = 100
    scores = np.random.randint(40, 100, size)
    genders = np.random.choice([0, 1], size=size)  # 0=女, 1=男
    pass_label = (scores >= 60).astype(int)X = np.column_stack(((scores - scores.mean()) / scores.std(), genders))  # 标准化+性别
    y = pass_label# 2. 拆分训练集与测试集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 3. 不同 K 值准确率比较
    acc_list = []
    k_values = range(1, 16)for k in k_values:model = KNeighborsClassifier(n_neighbors=k)model.fit(X_train, y_train)y_pred = model.predict(X_test)acc = accuracy_score(y_test, y_pred)acc_list.append(acc)# 4. 可视化不同 K 值的准确率
    plt.plot(k_values, acc_list, marker='o', linestyle='--')
    plt.title("不同 K 值下的准确率")
    plt.xlabel("K 值")
    plt.ylabel("准确率")
    plt.xticks(k_values)
    plt.grid(True)
    plt.tight_layout()
    plt.show()# 5. 使用 GridSearchCV 找最佳 K
    param_grid = {'n_neighbors': list(range(1, 16))}
    grid_search = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5)
    grid_search.fit(X_train, y_train)print("✅ 最佳 K 值:", grid_search.best_params_)
    print("📋 最佳交叉验证准确率:", grid_search.best_score_)# 6. 在测试集上评估
    best_model = grid_search.best_estimator_
    y_pred = best_model.predict(X_test)print("\\n=== 最终模型评估(测试集) ===")
    print("准确率:", accuracy_score(y_test, y_pred))
    print(classification_report(y_test, y_pred))
    

    运行输出:

    在这里插入图片描述

    ✅ 最佳 K 值: {'n_neighbors': 1}
    📋 最佳交叉验证准确率: 0.9875
    \n=== 最终模型评估(测试集) ===
    准确率: 0.95precision    recall  f1-score   support0       0.88      1.00      0.93         71       1.00      0.92      0.96        13accuracy                           0.95        20macro avg       0.94      0.96      0.95        20
    weighted avg       0.96      0.95      0.95        20
    
http://www.dtcms.com/wzjs/557286.html

相关文章:

  • 石家庄制作网站的公司简介网站建设与维护 电子版
  • 安溪建设局网站视频网站开发计划书
  • 国外特效网站郑州网站设计的公司
  • 天台高端网站建设公司吉林省网站制作公司有哪些
  • 企业网站建设设计服务网站建设公司方案
  • 松岗专业做网站公司乐昌网站建设
  • 旗县长安网站建设思路那个网站建设好
  • 天津个人网站制作wordpress改不成中文
  • 网站标题组合秦皇岛抚宁区建设局网站
  • 网络工程适合女生吗几级英语可以做外贸网站seo
  • 网站开发语言 知乎wordpress安装没有选择语言
  • 凯里网站开发gzklyy六安网站制作人才招聘
  • 做网站杭州傲视信息陈木胜怎么走的
  • 化妆品网站建设目标与期望公司网站设计图
  • 西安做企业网站app制作公司排行榜
  • 柳州建设公司网站南昌定制网站开发费用
  • 海报模板在线制作免费网站本溪市城乡住房建设厅网站
  • reeyee网站建设wordpress 评论go跳转
  • 苏格网站建设公司网页网站建设 ppt模板
  • 教做网站的学校3d动画制作
  • 有自媒体谁还做网站wordpress2010如何适应手机
  • 无锡手机网站建设报价创鑫云网络
  • 买域名之后怎样做网站在工商网站上怎么做电话的变更
  • 主流的自助建站网站电影网页设计模板图片
  • 保健品网站设计机构传播公司可以做门户网站吗
  • 深圳制作网站哪家好要找企业做网站应该注意什么
  • 功能型网站开发价格展示设计公司有哪些
  • 建设网站的服务费是指什么互联网营销师是我国哪一年发布的新职业
  • 网站后台编辑网站建设的知识
  • 建一个下载网站要什么cms系统网页视频下载快捷键