K-Nearest Neighbor(KNN) 最邻近分类算法及Python实现方式
来源:互联网 发布:java的编译命令是哪个 编辑:程序博客网 时间:2024/05/16 05:52
K-Nearest Neighbor 最邻近分类算法:
简称KNN,最简单的机器学习算法之一,核心思想俗称“随大流”。是一种分类算法,基于实例的学习(instance-based learning)和懒惰学习(lazy learning)。
懒惰学习:指的是在训练是仅仅是保存样本集的信息,直到测试样本到达是才进行分类决策。
核心想法:
在距离空间里,如果一个样本的最接近的k个邻居里,绝大多数属于某个类别,则该样本也属于这个类别。
范例:
假设,我们有这样一组电影数据:
由数据可以看出,我们有上述6部电影的数据及分类,最后一部“未知”的是需要预测处于哪个分类中。
然后,我们将数据中的“打斗次数”属性标记为X,“接吻次数”标记为Y,这样上述数据都能化为坐标轴中的一点:
之后便是将所有点与“未知”的点G进行距离计算,因为这个例子是二维的,因此这里我们使用E(x,y)=sqr((x2-x1)^2+(y2-y1)^2),如果是多维的话,可以使用:
最后可得到结果,这里我省略到int:
a:20
b:18
c:19
d:115
e:117
f:118
因此可以看出,最近的三个点是ABC三点,而ABC三点都是Romance类型。
选择方式:
根据上述例子,如果ABC中三个电影分类有一个不是Romance怎么办。这里我们遵循少数服从多数的投票法则(majority-voting),让未知实例归类为最邻近样本中最多数的类别。
其他距离衡量方式:
亦可使用余弦值(cos),相关度(correlation),曼哈顿距离等。
优点:
简单,易于实现,易于理解,通过对K的选择能一定程度上的具备丢噪音数据的健壮性(增大K值)
缺点:
需要大量的空间存储已知实例,算法复杂度高(需要比较所有已知实例)。当样本分布不平均时,比如其中一个样本实例过多,容易被归纳为实例多的样本,如下图Y点:
解决方法:
给距离增加权重,越近的距离权重越高,能一定程度的避免上述样本分布不平均的问题。
Python实现方式:
import numpy as np from sklearn import neighbors knn = neighbors.KNeighborsClassifier() #取得knn分类器 data = np.array([[3,104],[2,100],[1,81],[101,10],[99,5],[98,2]]) #data对应着打斗次数和接吻次数labels = np.array([1,1,1,2,2,2]) #labels则是对应Romance和Actionknn.fit(data,labels) #导入数据进行训练 print(knn.predict([18,90]))需要加载numpy,sklearn包,这两个都是机器学习或数据挖掘常用的包。
0 0
- K-Nearest Neighbor(KNN) 最邻近分类算法及Python实现方式
- 最邻近规则分类(K-Nearest Neighbor)KNN算法
- 最邻近规则分类(K-Nearest Neighbor)KNN算法应用
- kNN(K-Nearest Neighbor)最邻近规则分类
- kNN(K-Nearest Neighbor)最邻近规则分类
- kNN(K-Nearest Neighbor)最邻近规则分类
- kNN(K-Nearest Neighbor)最邻近规则分类
- kNN(K-Nearest Neighbor)最邻近规则分类
- kNN(K-Nearest Neighbor)最邻近规则分类
- kNN(K-Nearest Neighbor)最邻近规则分类
- kNN(K-Nearest Neighbor)最邻近规则分类
- kNN(K-Nearest Neighbor)最邻近规则分类
- kNN(K-Nearest Neighbor)最邻近规则分类
- kNN(K-Nearest Neighbor)最邻近规则分类
- K最邻近算法(K-Nearest Neighbor,KNN)(初探)
- 机器学习与深度学习(二) k最邻近分类算法 (K-Nearest Neighbor) KNN
- 机器学习算法:kNN(K-Nearest Neighbor)最邻近规则分类
- 4.1 最邻近规则分类(K-Nearest Neighbor)KNN算法
- linux 驱动笔记(五)
- linux 驱动笔记(六)
- linux 驱动笔记(七)
- matlab event notify recursive
- ubuntu网易源
- K-Nearest Neighbor(KNN) 最邻近分类算法及Python实现方式
- dlgdata.cpp line 40 断言失败
- 堆排序(HeapSort)
- Ubuntu 16.04 安装 Docker 1.11.2
- Spark (Python版) 零基础学习笔记(一)—— 快速入门
- kubernetes1.4 基础篇:Learn Kubernetes 1.4 by 6 steps(5):Step 4. Expose Your App Publicly
- 【16.23%】【codeforces 586C】Gennady the Dentist
- AutoCAD VBA enabler 2010-2017
- Longest Increasing Path in a Matrix