history Transformer javascript sass Amaze UI vue中文网 后台ui模板 网页后台模板 河南普通话报名 jquery获取dom对象 docker查看所有容器 maya曲线建模 flutter优缺点 centos定时任务 kubernetes视频 kubernetes架构 mysql建表 python解析json数据 python测试 python定义一个变量 java初学者 java实例方法 java创建目录 linux教程 linux密码 超级兔子ie修复专家 神龙kms kms神龙 js格式化时间 ezcad2 maya2016教程 文明6万神殿 彻底卸载mysql wmiprvse是什么进程 汇通启富下载 女圣骑 软碟通u盘装系统教程 qt5下载 极速pdf转word 微信超额20万怎么办
当前位置: 首页 > 学习教程  > 编程语言

Python KNN K近邻分类

2021/2/13 19:04:21 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

Python KNN K近邻分类 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。 2 KNN简介 相关概念见下: 对于给定的观测来预测目标分类时KNN算法执行过…

                               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
# 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)) 

 

4 总结

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

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

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

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

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

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


本文链接: http://www.dtmao.cc/news_show_700269.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?