博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习算法学习---处理分类问题常用算法(二)
阅读量:6907 次
发布时间:2019-06-27

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

k-近邻算法采用测量不同特征值之间的距离方法进行分类。

优点:精度高、对异常值不敏感、无数据输入假定。

缺点:计算复杂度高、空间复杂度高。

适用范围:数值型、标称型。

工作原理:存在一个样本数据集合(训练样本集),并且样本集中每个数据都存在标签。输入没有标签的新数据后,将数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相近数据的分类标签。

python实现简单的KNN算法如下:

 

KNN
from numpy import *
import operator
def getDataSet():
group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels=['A','A','B','B']
return group,labels
def classfy0(inX,dataSet,labels,k):
dataSetSize=dataSet.shape[0]
diffMat=tile(inX,(dataSetSize,1))-dataSet
sqdiffMat=diffMat**2
sqDistances=sqdiffMat.sum(1)
distances=sqDistances**0.5
sortedDistIndicies=distances.argsort()
classCount={}
for i in range(k):
voteIlabel=labels[sortedDistIndicies[i]]
classCount[voteIlabel]=classCount.get(voteIlabel,0)+1
sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
return sortedClassCount[0][0]
group,labels=getDataSet()
print(classfy0([0,0],group,labels,3))
 

 

该算法用到的距离计算为欧式距离公式。

转载于:https://www.cnblogs.com/zhenpengwang/p/10792648.html

你可能感兴趣的文章
Python编程笔记(第三篇)【补充】三元运算、文件处理、检测文件编码、递归、斐波那契数列、名称空间、作用域、生成器...
查看>>
win7 设置docker加速器
查看>>
centos ibus erro resolve
查看>>
Jedis存取对象和对象列表
查看>>
什么是区块链?
查看>>
PHP-Phalcon框架中的数据库操作
查看>>
第16届电源技术专题研讨会
查看>>
Python web前端 05 JavaScript
查看>>
Hibernate(1) 阻抗不匹配
查看>>
如何才能留住员工
查看>>
Pascal常用函数
查看>>
LeetCode - 12. Integer to Roman
查看>>
Python——hashlib
查看>>
关于DB2 ORACLE MYSQL 数据库 where字句执行顺序问题
查看>>
Java+Selenium3.3.1环境搭建
查看>>
@responseBody注解的使用
查看>>
为什么in_array(0, ['a', 'b', 'c'])返回true
查看>>
CISCO 7204路由器SDH线路配置
查看>>
判断手机端还是pc端
查看>>
如何在MySQL中设置外键约束
查看>>