机器学习最简单算法——KNN算法(K-Nearest Neighbor)

机器学习最简单算法——KNN算法(K-Nearest Neighbor)

一、学习算法
二、KNN算法(k-Nearest Neighbor)
三 、sklearn算法库(scikit-learn)
四、学习曲线
五、交叉验证
六、归一化
七、距离惩罚
八、KNN模型评价
九、模型的追求
一、学习算法

机器学习的方法是基于数据产生的"模型"(model)的算法,也称"学习算法"(learning algorithm)。包括有监督学习(supervised learning)、无监督学习(unsupervised learning)、半监督学习(semi-supervised learning)、强化学习(reinforcement learning)。

1、有监督学习
指对数据的若干特征与若干标签(类型)之间的关联性进行建模的过程;只要模型被确定,就可以应用到新的未知数据上。这类学习过程可以进一步分为「分类」(classification)任务和「回归」(regression)任务。在分类任务中,标签都是离散值;而在回归任务中,标签都是连续值。

2、无监督学习
指对不带任何标签的数据特征进行建模,通常被看成是一种“让数据自己介绍自己” 的过程。这类模型包括「聚类」(clustering)任务和「降维」(dimensionality reduction)任务。聚类算法可以讲数据分成不同的组别,而降维算法追求用更简洁的方式表现数据。

3、半监督学习
另外,还有一种半监督学习(semi-supervisedlearning)方法, 介于有监督学习和无监督学习之间。通常可以在数据不完整时使用。

4、强化学习
强化学习不同于监督学习,它将学习看作是试探评价过程,以"试错" 的方式进行学习,并与环境进行交互已获得奖惩指导行为,以其作为评价。此时系统靠自身的状态和动作进行学习,从而改进行动方案以适应环境。

二、KNN算法(k-Nearest Neighbor)

1、算法原理

k-近邻算法,它的本质是通过距离判断两个样本是否相似,如果距离够近就认为他们足够相似属于同一类别。我们找到离其最近的k个样本,并将这些样本称之为「近邻」(nearest neighbor)。对这k个近邻,查看它们的都属于何种类别(这些类别我们称作「标签」(labels))。然后根据“少数服从多数,一点算一票”原则进行判断,数量最多的的标签类别就是新样本的标签类别。其中涉及到的原理是“越相近越相似”,这也是KNN的基本假设。

2、算法模型

可以看到k-近邻算法就是通过距离来解决分类问题。这里我们解决的二分类问题,整个算法结构如下:
①算距离
给定测试对象𝐼𝑡𝑒𝑚,计算它与训练集中每个对象的距离。
依据公式计算𝐼𝑡𝑒𝑚 与𝐷1,𝐷2,……𝐷j之间的相似度,得到𝑆𝑖𝑚 (𝐼𝑡𝑒𝑚,𝐷1) , 𝑆𝑖𝑚 (𝐼𝑡𝑒𝑚,𝐷2) , 𝑆𝑖𝑚 (𝐼𝑡𝑒𝑚,𝐷j).
② 找邻居
圈定距离最近的k个训练对象,作为测试对象的近邻。
将𝑆𝑖𝑚 (𝐼𝑡𝑒𝑚,𝐷1) , 𝑆𝑖𝑚 (𝐼𝑡𝑒𝑚,𝐷2) , 𝑆𝑖𝑚 (𝐼𝑡𝑒𝑚,𝐷j) 排序,若是超过相似度阈值𝑡,则放入邻居集合𝑁𝑁.
③ 做分类
根据这k个近邻归属的主要类别,来对测试对象进行分类。
自邻居集合𝑁𝑁中取出前k名,查看它们的标签,对这k个点的标签求和,以多数决,得到𝐼𝑡𝑒𝑚可能类别。

三 、sklearn算法库(scikit-learn)

自2007年发布以来,scikit-learn已经成为Python中重要的机器学习库了。scikit-learn,简称sklearn,支持了包括分类、回归、降维和聚类四大机器学习算法,以及特征提取、数据预处理和模型评估三大模块。sklearn是一个可以帮助我们高效实现算法应用的工具包。

在这里插入图片描述
在这里插入图片描述

# sklearn实现流程
from sklearn.neighbors import KNeighborsClassifier # 导入KNN算法
# 实例化,简单来说就是赋值
clf=KNeighborsClassifier(n_neighbors=3)
# 训练模型
clf = clf.fit(X,y) 
# 预测输出,返回预测的标签
result = clf.predict([[12.8,4.1]])  # predict,传入的数据必须是二维的数组
result  # 查看结果
# 模型的评估,接口score,返回预测的准确率,只针对分类问题离散型
score = clf.score([[12.8,4.1]],[0]) # score,传入的数据必须是二维的数组
score # 准确率的范围[0-1]
# 返回预测的概率
clf.predict_proba([[12.8,4.1]])
#skearn导入数据集,做KNN预测
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_breast_cancer   #数据集库 
from sklearn.model_selection import train_test_split  #划分数据集库
# 探索数据集
data 
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值