博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[python机器学习及实践(3)]Sklearn实现K近邻分类
阅读量:6261 次
发布时间:2019-06-22

本文共 1551 字,大约阅读时间需要 5 分钟。

1.KNN算法介绍

KNN算法的思想:在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是K个数据中出现次数最多的那个分类。

其算法的描述为:

1)计算测试数据与各个训练数据之间的距离;

2)按照距离的递增关系进行排序;

3)选取距离最小的K个点;

4)确定前K个点所在类别的出现频率;

5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。

2.例子:KNN实现鸢尾数据集分类

鸢尾数据集一共有150个数据样本,并且均匀分布在3个不同的亚种;每个数据样本被4个不同的花瓣、花萼的形状特征所描述。

数据集包含了三类分别为:setosa, versicolor, virginica

数据集测量了所有150个样本的4个特征,分别是:

  1. sepal length(花萼长度)
  2. sepal width(花萼宽度)
  3. petal length(花瓣长度)
  4. petal width(花瓣宽度)

以上四个特征的单位都是厘米(cm)

样本特征:

 

[5. 2.3 3.3 1. ]

[4.9 3.1 1.5 0.1]
[6.3 2.3 4.4 1.3]
[5.8 2.6 4. 1.2]
[6.2 2.9 4.3 1.3]
[4.7 3.2 1.3 0.2]
[4.6 3.4 1.4 0.3]

。。。。

标签:0,1,2

 

代码:

#coding=utf-8from sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import StandardScalerfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.metrics import classification_report#1.数据获取iris = load_iris()print iris.data.shape#2.数据预处理:训练集测试集分割,数据标准化X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.25,random_state=33)# 对训练和测试的特征数据进行标准化ss = StandardScaler()X_train = ss.fit_transform(X_train)X_test = ss.transform(X_test)# 3.使用K临近分类器对测试数据进行类别预测knc = KNeighborsClassifier()knc.fit(X_train,y_train)y_predict = knc.predict(X_test)#4.获取结果报告print 'The Accuracy of K-Nearest Neighbor Classifier is', knc.score(X_test,y_test)print classification_report(y_test,y_predict,target_names=iris.target_names)

结果:

特点:K近邻模型没有参数训练过程,而是根据测试样本在训练数据的分布直接作出分类决策。

缺点是非常高的计算复杂度和内存消耗:需要遍历每个训练样本、逐一计算相似度并排序。

 

转载于:https://www.cnblogs.com/youngsea/p/9328513.html

你可能感兴趣的文章
ORA-00001: unique constraint violated并不一定是主键冲突
查看>>
SecureCRT设置背景颜色
查看>>
window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法
查看>>
How to update WPF browser application manifest and xbap file with ‘mage.exe’
查看>>
SQL Server T-SQL高级查询
查看>>
通过配置CPU参数 worker_cpu_affinity 提升nginx性能
查看>>
解决的方法:warning: Clock skew detected. Your build may be incomplete.
查看>>
技术型创业者easy遇到的三大问题
查看>>
无法打开SQL Server的连接
查看>>
java泛型中的对象
查看>>
进程和线程区别理解
查看>>
php创建token
查看>>
Android 系统API实现数据库的增删改查和SQLite3工具的使用
查看>>
95、Android下在onCreate中获取控件的宽度和高度(通过回调)
查看>>
UML在需求分析阶段的应用
查看>>
JavaScript:JavaScript事件的处理
查看>>
WEB安全测试的类型
查看>>
ES6笔记(7)-- Promise异步编程
查看>>
早睡早起
查看>>
C#软件监控外部程序运行状态
查看>>