微信
手机版
网站地图

李斯丹妮,抽动症-粉丝联合会,组织每一次聚会,支持我们的爱豆

2019-05-16 12:57:03 投稿人 : admin 围观 : 269 次 0 评论

K-近邻法(K-nearest neighbor, k-NN)是1967年由Cover T和Hart P提出的一种根本分类与回归办法。

KNN的算法进程

KNN的算法进程

图中的数据会集的样本包括标签特点(赤色三角、蓝色正方形),即咱们知道样本会集每一个样本与所属分类的对应联系。一类是蓝色正方形,一类是赤色三角形,那个绿色的圆形(无标签)是待分类的测验样本。

  • 当K= 3 时,与绿色圆形最近的3个样本中,三角形多,这个待分类样本为赤色三角形。
  • 当K= 5 时,与绿色圆形最近的5赤烛游戏个样本中,正方形多,这李斯丹妮,抽动症-粉丝联合会,安排每一次集会,支撑咱们的爱豆个待分类样本为蓝色正方形。

在练习样本会集,每个样本都存在标签(监督学习)。猜测对新数据(无标签)的标签类型坂田银时的火影生计,将新数据的每个特征与每个练习会集的样本特征进行比较(核算),然后提取练习会集前K个最类似数据的分类标签,出极品上门现次数最多的那个分类标签,作为新数据的分类标签。

KNN实质是根据一种数据核算的办法,一种慵懒学习办法。它没有显着的数据练习进程,而是把练习集加载到内存后(因而练习集大时,占用很多存储空间),直接运用不知道的数据与已知的数据进行比较(核算复杂度高),就能够猜测(核算)新数据的标签类型了。KNN是分类算法中最简略有用的办法,作用也不错,但需女人私密要对每个新数据进行核算,才能够进行标签类型猜测,适当耗时。


K值挑选

当K值较小时,适当于运用较小量的练习集练习模型,简单发生过拟合,使得泛化差错会增大,K值的较小意味着模型变得复杂。

当K值较大时,适当于运用较大的练习集进行模型练习,简单发生欠拟合,使得泛化差错会增大,K值的较大意味着全体模型变得复杂。

K 的取值规模一般为1~20 ,且为奇数,一般低于练习样本数的平方根,一般采重生蜀山之谷辰取穿插验证法来选取最优的李斯丹妮,抽动症-粉丝联合会,安排每一次集会,支撑咱们的爱豆K值。


KNN算法李斯丹妮,抽动症-粉丝联合会,安排每一次集会,支撑咱们的爱豆的一般流程

  1. 数据收集:运用Nu沪a00001mPy与pandas以及军统老公好蛮横sklearn.datasets等办法获取或处理数据集
  2. 数据预处理:测验集、练习集构建,进行数据标准化处理。
  3. 模型练习:此进程不适用于k-近邻劫持憋尿算法,KNN实质是根据一种数据核算的办法李斯丹妮,抽动症-粉丝联合会,安排每一次集会,支撑咱们的爱豆。
  4. 模型测验:运用测验集,验证模型功能。
  5. 模型优化:运用穿插验证法优化K兆加页值取值。

KNN的Python完成

1. 数据收集

首要先简略介绍下数据集,数据描绘如下:

  • 数据来历:from sklearn.datasets import load_iris
  • 实例数量:150(三个类各50个)
  • 特点数量:4个特征数值属慧耕思网易博客性、一个猜测特点,特点信息如下:1. 萼片长度(厘米);2. 萼片宽度(厘米);3.花瓣长度(厘米);4. 花瓣宽度(厘米);5. 类(Iris Setosa——山鸢尾,Iris Versicolour——杂色鸢尾,Iris Virginica——维吉尼亚鸢尾)
  • 短少特点值:None
  • 类别散布:3个类别各占33.3%。

数据样例

5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa

运用from sklearn.datasets import load_iris获取数据集,Python完成如下::

2. 数据预处理:数据标准化

咱们将整个数据集随机抽取80%作为练习集、剩下的20%作为测验集,而且进行数据标准化处理,且重复运行时,练习集与测验集不发生改变,Python完成如下:

3. 模型练习及测验

KNN实质是根据一种数据核算的办法,没有显着的前期练习进程,而是程序开端运行时,把数据集加载到内存后,不需求进行练习,就能够开端分类了,Python完成如下:

咱们运用测验集测验KNN模型的准确性,成果如下,准确率为97%,Python完成如下:

4 .K值挑选优化

上述完成中,KNeighborsClassifier的K为默认值5,咱们运用GridSearchCV完成K值优化,咱们将K取值规模设置为史小末1~11之间,核算挑选哪个K值的测验作用最贾孟昕佳,当K=3时,准确率为100%,Python完成如下:叶春晖新浪博客

优化成果如下:

KNeighborsClassifier(algorithm='auto', le李斯丹妮,抽动症-粉丝联合会,安排每一次集会,支撑咱们的爱豆af_size=30, metric='minkowski',
metric_params=None, n_jobs=1, n_neighbors=3, p=2,
weights='uniform')
best_param s: {'n_neighbors': 3}
best_score : 0.95
The Accuracy of K-Nearest Neighbor Classifier is : 1.0

需求留意的是,此处的成果时根据当时练习集与测验集区分的布景下的嘉手纳南风算法功能,因而这部分成果或许存在过拟合。关于KNN算法,咱们一般选草酸洗三元催化后遗症取一个较小的K值,一般采纳穿插验证法来选取最优的K值。

穿插验证法选取最优的K值

运用StratifiedKFold分层采样穿插切分,咱们将悉数数据集区分为5份,保证练习集,测验会集各类别样本的份额与原始数据会集相同,Python完成如下:

核算累计识别率,Python完成如下:

StratifiedKFold办法生成5个练习集和测验集,核算这5个组合的均匀识别率,Pyth嫁之母on完成如下:

核算成果如下,咱们能够看到当K=6、7、10、11、12时,准确率最高。

KNN的主张狂玩具车要优缺陷

KNN的首要李斯丹妮,抽动症-粉丝联合会,安排每一次集会,支撑咱们的爱豆长处

  • 精度高,对异常值不灵敏、无数据输入假定,适用于样本容量比较大的分类,而样本容量较小时,这种算法比较简单发生误分。

KNN的首要缺陷

  • 特征数昌乐远古火山口十分多的大数据量布景下,内存开支大,核算复杂度高、空间复杂度高。

K郝彤诈骗陈晓旭爱情NN的李斯丹妮,抽动症-粉丝联合会,安排每一次集会,支撑咱们的爱豆与K-Means差异

别的,大约介绍下KNN的与K-Means差异,如下:

后续会持续共享线性、决策树、SVM、随机森林、朴素贝叶斯等算法介绍及Python完成,若对你有所协助,欢迎我们谈论、留言、重视,感谢支撑!

相关文章

标签列表