Python KNN K近邻分类

1 声明

本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。

2 KNN简介

相关概念见下:

对于给定的观测来预测目标分类时KNN算法执行过程是:

首先先基于计算距离度量方法(如欧式距离)的识别出k个最近的观测(也叫做的邻居)

然后这K个观测基于自己的分类选举出最终预测的分类。

观测是第j类的概率见如下公式:

其中v是Xu  附近内的k个观测,yi是第i个观测对应的分类。I是指示函数(1代表真否则为0),在scikit-learn里可通过predict_proba方法查看观测属于某个分类的概率。

欧几里德距离(euclidean): 

曼哈顿距离(manhattan): 

闵可夫斯基距离(Minkowski Distance): 

注:这里p等于1即曼哈顿距离,p等于2即欧几里德距离。

3 KNN代码示例

# Step1 加载相关包,(因涉及距离计算,这里将特征都缩放到同一量纲上)
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
from sklearn import datasets
from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.model_selection import GridSearchCV
# Step2 装载数据,指定X(特征)y(目标)
iris = datasets.load_iris()
X = iris.data
y = iris.target
# Step3 对所有特征实施标准化
standardizer = StandardScaler()
X_std = standardizer.fit_transform(X)# Step4 训练KNN分类器(指定n_neighbors=5为5个,n_jobs=-1即尽可能利用计算机资源)
knn = KNeighborsClassifier(n_neighbors=5, n_jobs=-1).fit(X_std, y)
# Step5 利用新的观测预测分类(这里新2个观测)
new_observations = [[ 0.75, 0.75, 0.75, 0.75],
[ 1, 1, 1, 1]]
print(knn.predict(new_observations))
print(knn.predict_proba(new_observations))# 创建一个pipeline
pipe = Pipeline([("standardizer", standardizer), ("knn", knn)])
# 指定n_neighbors参数的候选值
search_space = [{"knn__n_neighbors": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}]
# 创建网格搜索与交叉验证
classifier = GridSearchCV(
pipe, search_space, cv=5, verbose=0).fit(X_std, y)
# 输出n_neighbors最好的参数
print(classifier.best_estimator_.get_params()["knn__n_neighbors"])

4 总结

关于KNeighborsClassifier超参数的几点说明:

1 度量指标Metric是计算距离的参数

2 n_jobs参数用于指定能利用计算的多少个核,用于并行计算。

3 algorithm参数用于指定利用何种算法计算最近的邻居,一般不用刻意指定。

4 weights参数被指定距离时距离近的观测在“投票”分类时权重会大于远的邻居。

5 计算时需要将所有的特征进行标准化,即将它们缩放到同一个量纲上。

Python KNN K近邻分类相关推荐

  1. python 机器学习——K 近邻分类理论及鸢尾( Iris )数据集实例操作

    K 近邻分类理论及鸢尾( Iris )数据集实例操作 一.K 近邻分类理论 二.K 近邻分类实例操作 (1)导入数据 划分训练集测试集 (3)数据标准化 (4)用 K 近邻法建立模型 (5)性能评估 ...

  2. 机器学习理论梳理2 : KNN K近邻分类模型

    本文主要梳理KNN,K近邻模型的基本原理. 从机器学习的大分类来看,K近邻模型属于监督学习中的一种判别式模型,常用于分类问题.初始的数据集中,包含了已经分类标签好的数据.一句话来说,K近邻模型就是通过 ...

  3. 机器学习经典算法具体解释及Python实现--K近邻(KNN)算法

    (一)KNN依旧是一种监督学习算法 KNN(K Nearest Neighbors,K近邻 )算法是机器学习全部算法中理论最简单.最好理解的.KNN是一种基于实例的学习,通过计算新数据与训练数据特征值 ...

  4. knn K近邻算法python实现

    本文主要内容: knn K近邻算法原理 sklearn knn的使用,以及cross validation交叉验证 numpy 实现knn knn改进方法 1 knn K近邻算法原理 K近邻算法:给定 ...

  5. 机器学习——K近邻分类算法及python代码实现

    <机器学习:公式推导与代码实践>鲁伟著读书笔记. K近邻(K-nearest neighbor,K-NN)算法是一种经典的监督学习的分类方法.K近邻算法是依据新样本与k个与其相邻最近的样本 ...

  6. 使用Python实现K近邻

    Author:pingfan_yu Data:2021.12.9 实验目的 使用Python实现K近邻 实验原理 (1)计算测试与各个训练数据之间的距离: (2)按照距离的递增关系进行排序: (3)选 ...

  7. 数据处理 | MATLAB实现KNN(K近邻)缺失数据填补

    数据处理 | MATLAB实现KNN(K近邻)缺失数据填补 目录 数据处理 | MATLAB实现KNN(K近邻)缺失数据填补 基本介绍 插补描述 程序设计 参考资料 基本介绍 用于缺失值插补的单变量方 ...

  8. 机器学习100天(三十):030 K近邻分类算法-K值的选择

    机器学习100天,今天讲的是:K近邻分类算法-K值的选择. <机器学习100天>完整目录:目录 上一节我们讲了 K 折交叉验证的理论,下面我们将 K 折交叉验证算法应用到 K 近邻分类算法 ...

  9. Python Kmeans K均值分类

    Python Kmeans K均值分类 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 Kmeans简介 相关概念见下: Km ...

最新文章

  1. 《编写有效用例》导读书评——“Jolt大奖精选丛书”有奖征文
  2. POJ 1904 【强连通分量】.cpp
  3. mybatis不等于某个字符串的值_MyBatis 的 4 个妙用,别再踩坑了!
  4. 习题1083字符转换
  5. sql server远程主机强迫关闭了一个_交换机远程端口镜像
  6. python笔记:datetime模块中的函数
  7. 【JAVA】学生信息管理系统
  8. 微信支付v2升级v3注意事项
  9. C# Abp框架入门系列文章(一)
  10. 吉他入门教程之吉他音阶训练——运用方法
  11. 六级考研单词之路-二十二
  12. 部分安卓机型无法打开公众号/http链接,部分安卓机型无法打开公众号/http链接白屏
  13. 如何看待985高校例如交大的材料专业的研究生找不到好工作?
  14. 太少的相濡以沫,太多的相忘江湖
  15. zend及Slim 漏洞合集
  16. Vue3 项目遇到的问题
  17. 到家服务公司php源码,微信小程序-仿五洲到家商城源码
  18. 车路协同-智慧出行(智慧交通解决方案)
  19. 谈一下3月22日线下肉山小课堂感受
  20. [翻译]ASP.NET MVC4新特性之脚本压缩和合并

热门文章

  1. wxWidgets:文件类和函数
  2. boost::system::error_condition相关的测试程序
  3. boost::spirit模块演示语法和语义操作的计算器示例
  4. boost::static_mutex 的测试程序
  5. boost::mp11::mp_invoke_q相关用法的测试程序
  6. GDCM:gdcm::ImageWriter的测试程序
  7. GDCM:gdcm::Parser的测试程序
  8. Boost:bind绑定的回归测试
  9. ITK:并排平铺图像
  10. VTK:Utilities之ColorTransferFunction