🎩 欢迎来到技术探索的奇幻世界👨💻
📜 个人主页:@一伦明悦-CSDN博客
✍🏻 作者简介: C++软件开发、Python机器学习爱好者
🗣️ 互动与支持:💬评论 👍🏻点赞 📂收藏 👀关注+
如果文章有所帮助,欢迎留下您宝贵的评论,
点赞加收藏支持我,点击关注,一起进步!
引言
K近邻(K-Nearest Neighbors,简称KNN)算法是一种基本的分类和回归方法,它可以用于解决分类和回归问题。其核心思想可以简单描述如下:
原理
K近邻算法基于一个假设:相似的事物在很多情况下具有相似的性质。具体来说,在分类问题中,KNN算法根据某个样本在特征空间中与其最近的K个训练样本的标记来确定该样本的类别;在回归问题中,KNN算法则是根据该样本最近的K个训练样本的值来预测该样本的值。
工作流程
计算距离: 首先,计算待分类样本与训练集中所有样本的距离。常用的距离度量包括欧氏距离、曼哈顿距离、余弦相似度等。
选择K值: 确定K的取值,即要考虑多少个最近邻的样本。K的选择影响着分类或回归的结果,通常通过交叉验证或者经验选择一个合适的值。
确定邻居: 选出距离最近的K个样本。
进行预测:
- 分类问题: 对于分类问题,采用投票法(多数表决)来确定待分类样本所属的类别,即K个最近邻样本中出现最频繁的类别作为预测结果。
- 回归问题: 对于回归问题,通常采用平均值法,即将K个最近邻样本的值的平均值作为待预测样本的预测值。
特点和适用场景
- 简单有效: KNN是一种简单直观的算法,易于理解和实现。
- 非参数化: KNN算法不对数据的分布做出假设,因此在某些非线性数据的分类问题中表现较好。
- 适用性: 适用于小型数据集和中等大小的特征空间。
- 参数选择: K的选择对算法的性能有显著影响,选择不同的K值可能导致完全不同的结果。
正文
01-绘制均匀核函数和高斯核函数的函数曲线
这段代码是用来绘制两种核函数在一维数据上的图像,并将结果保存为图片。让我详细解释一下这段代码的具体步骤:
导入必要的库:
- 导入NumPy库,用于数值计算。
- 导入Pandas库,用于数据操作。
- 导入Matplotlib库中的Pyplot模块,用于数据可视化。
- 导入warnings模块,用于警告处理。
- 配置Matplotlib参数以支持中文显示,并避免负号显示乱码。
- 导入sklearn库中的linear_model模块、metrics模块中的classification_report函数、model_selection模块中的cross_validate和train_test_split函数、neighbors模块和preprocessing模块。
生成数据:
- 生成一个从-3到3均匀分布的包含100个数据点的一维数据d。
- 定义两种核函数对应的y值:
- y1为全为0.5的数组,表示均匀核函数对应的值。
- y2为高斯核函数对应的值,根据高斯分布的概率密度函数公式计算得出。
- 调整y1和y2的取值,使得在d小于-1和大于1时,y1和y2的取值为0,以展示核函数在特定区间内的变化。
绘制图像:
- 使用plt.plot方法绘制两种核函数在给定数据上的曲线图。
- 设置不同的linestyle以区分均匀核、高斯核和高斯核的理论形式(虚线)。
- 添加图例并设置标题,说明两种核函数的区别。
保存图片:
- 使用plt.savefig方法将生成的图像保存为一个名为"4.png"的文件,设置dpi为300,使得保存的图片具有更高的分辨率。
通过以上步骤,这段代码实现了对两种核函数在一维数据上的可视化,并将结果保存为图片,以便进一步分析和展示。
#本章需导入的模块
import numpy as np
import pandas as pd
impo