目录

  • 1 Chapter01. Introduction
    • 1.1 课程PPT
    • 1.2 补充材料(数学基础)
    • 1.3 本节作业
  • 2 Chapter02. Bayesian Decision Theory
    • 2.1 课程PPT
    • 2.2 视频素材
    • 2.3 章节测试
  • 3 Chapter03. Maximum Likelihood and Bayesian Estimation
    • 3.1 课程PPT
    • 3.2 视频素材
    • 3.3 补充材料(EM)
  • 4 Chapter04. Nonparametric Techniques
    • 4.1 课程PPT
    • 4.2 补充材料(距离)
  • 5 Chapter05. Linear Discriminant Functions
    • 5.1 课程PPT
    • 5.2 视频素材
    • 5.3 补充材料(梯度)
    • 5.4 数学证明
  • 6 Chapter06. Neural Networks
    • 6.1 课程PPT
    • 6.2 视频素材
    • 6.3 补充材料(BP)
  • 7 Chapter07. Dimension Reduction
    • 7.1 课程PPT
    • 7.2 补充材料(奇异值)
  • 8 Chapter08. Non-metric Methods
    • 8.1 课程PPT
  • 9 Chapter09. Unsupervised Learning and Clustering
    • 9.1 课程PPT
    • 9.2 实验
  • 10 Chapter10. Algorithm-independent Machine Learning
    • 10.1 课程PPT
    • 10.2 补充材料(偏差方差两难)
    • 10.3 实验
  • 11 课程实验
    • 11.1 实验环境设置
    • 11.2 python数据常用导入方法
    • 11.3 数据探索
    • 11.4 数据预处理
    • 11.5 朴素贝叶斯分类
    • 11.6 KNN分类
    • 11.7 线性回归
    • 11.8 逻辑回归
    • 11.9 SVM实现多分类
    • 11.10 决策树分类
    • 11.11 PCA实现
    • 11.12 K-means聚类实现
KNN分类

实验. 基于Scikit-learn库实现KNN分类

实验目标

本实验旨在通过使用Scikit-learn库,帮助学生理解KNN算法的基本原理,直观感受调整超参数对模型性能的影响,并熟悉从加载数据到模型训练、评估以及可视化的完整流程。

实验环境

o Python 3.x

o Scikit-learn库、Numpy库、Matplotlib库

o Jupyter Notebook或类似IDE(用于代码编写和结果展示)

实验数据集

使用Scikit-learn自带的Iris数据集。该数据集包含150条记录,每条记录有4个特征(萼片长度、萼片宽度、花瓣长度、花瓣宽度),属于3个类别之一(Setosa、Versicolor、Virginica)。这是一个典型的多分类数据集,适合进行KNN分类实验。。

实验步骤

1. 导入必要的库

o 导入Numpy、Matplotlib和Scikit-learn中的KNN、数据分割和标准化工具。

2. 加载数据集

o 使用Scikit-Learn的datasets模块加载Iris数据集。

o 显示数据集的基本信息,如样本数量、特征数量和类别标签。

3. 数据预处理

o 数据标准化:在KNN中,特征尺度差异会影响距离计算,因此需要对特征数据进行标准化。

o 使用train_test_split函数将数据集分成训练集和测试集(通常比例为80%训练,20%测试)

4. 构建KNN模型

o 使用KNN算法创建模型,尝试设置不同的K值(例如K=3, 5, 7)。

o 将训练数据输入模型,使用训练集数据进行模型训练

5. 选择最佳K值,重新训练模型并评估

o 绘制出不同K值下模型的准确率,以找到最佳的K值。

o 根据图表找到的最佳K值,重新训练模型并评估其性能。

实验总结

o 总结实现KNN分类的完整步骤。

o 分析实验过程中遇到的问题和解决方案。

o 感受不同的超参数(这里是K值)对模型性能的影响。

o 可继续探索如何将KNN用于回归任务。

实验代码参考

以下是一个利用Scikit-learn实现KNN分类的代码示例(以Iris数据集为例):

——————————————

# 导入必要的库


  

# 加载数据集  


# 数据标准化

scaler = StandardScaler()

X_scaled = scaler.fit_transform(X)

# 划分数据集,测试集占20%



# 设置不同的K值(如从1到30)创建KNN模型,并求出每个K值下模型的准确率



# 绘制出不同K值下模型的准确率,从而找出最佳K值



# 根据上面找出的最佳K值,重新训练模型并评估



—————————————————