区分KNN & KMEANS

kNN监督学习中的分类算法
k-means则是非监督学习中的聚类算法;
二者* 相同之处* :均利用近邻信息来标注类别。

ps:
聚类指将未标注的样本数据中相似的分为同一类,即“物以类聚,人以群分”。
若输入变量与输出变量均为连续变量,则称为回归;输出变量为有限个离散变量,则称为分类;输入变量与输出变量均为变量序列,则称为标注

kmeans算法:
选取k个初始质心(作为初始cluster);
repeat:
对每个样本点,计算得到距其最近的质心,将其类别标为该质心所对应的cluster;
重新计算k个cluser对应的质心;
until 质心不再发生变化

kmeans缺点:对初始值敏感,需要事前给出k值,特定于某些应用,对噪声敏感
https://www.cnblogs.com/en-heng/p/5173704.html

kNN算法:在训练集中选取离输入的数据点最近的k个邻居,根据这个k个邻居中出现次数最多的类别(最大表决规则),作为该数据点的类别。

knn–sklearn

#导入数据集生成器
from sklearn.datasets import make_blobs#生成样本数为200,分类为2的数据集
data=make_blobs(n_samples=200,centers=2,random_state=8)

生成的data有x,y,其中x为特征,y为分类类别,centers=2即有两个类别,为0,1。
ps:
scikit中的make_blobs方法常被用来生成聚类算法的测试数据,直观地说,make_blobs会根据用户指定的特征数量、中心点数量、范围等来生成几类数据,这些数据可用于测试聚类算法的效果。
n_samples:数据样本点个数
n_features:数据的维度
centers:数据的中心点
cluster_std:数据集的标准差,浮点数或者浮点数序列.
center_box:数据边界.
shuffle :洗乱,默认值是True
random_state:随机种子

X,y=data


x为两个特征,也就是x1,x2,每个特征都有200个数据,可以将x在图中表示出来,横纵轴分别为x1,x2,然后y表示不同的类别,有两种类别为0,1,这两种类别在图中可以用两种不同的颜色表示。如下图:

import matplotlib.pyplot as plt
%matplotlib inline
plt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.spring,edgecolors='k')

用plt将数据可视化,画出散点图,横纵坐标分别为X的第一,二列。
c就是设置颜色,通过y来设置颜色,因为上面例子里的y为二分类,所以颜色有两种
ps:快捷键shift+tab可以查看参数

#导入KNN分类器
from sklearn.neighbors import KNeighborsClassifier
import numpy as np#knn分类器实例化
clf=KNeighborsClassifier()
clf.fit(X,y)

umpy.meshgrid()——生成网格点坐标矩阵。
二维坐标系中,X轴可以取三个值1,2,3, Y轴可以取三个值7,8, 请问可以获得多少个点的坐标?
显而易见是6个:
(1,7)(2,7)(3,7)
(1,8)(2,8)(3,8)

np.meshgrid()就是干这个的!
https://blog.csdn.net/littlehaes/article/details/83543459

#计算x,y轴的取值范围,加一和减一是为了让图上的点能够不在边上展示,即留出一部分边距,让图片更美观
x_min,x_max=X[:,0].min()-1,X[:,0].max()+1
y_min,y_max=X[:,1].min()-1,X[:,1].max()+1xx,yy=np.meshgrid(np.arange(x_min,x_max, .02),np.arange(y_min,y_max, .02))


ravel()将多维数组转换为一维数组

np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等。
np.c_是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等。

上图所示的矩阵的第一列为X的第一种特征x1的取值范围,最大值与最小值之间以0.02为步长,建立图形的x轴的数值,第二列为yy为x2的取值范围,也就是图中y轴的数据值

Z=clf.predict(np.c_[xx.ravel(),yy.ravel()])

由x轴y轴上的每个点都做预测,可以将图分成两类,如下图


plt.pcolormesh的作用在于能够直观表现出分类边界

pcolormesh(X,Y,Z cmap=None, vmin=None, vmax=None)
X,Y:指的是二维网格面每一个点的横纵坐标
Z:(X,Y)坐标处的颜色值
cmap:着色方案

综上:画图如下

#计算x,y轴的取值范围,加一和减一是为了让图上的点能够不在边上展示,即留出一部分边距,让图片更美观
x_min,x_max=X[:,0].min()-1,X[:,0].max()+1
y_min,y_max=X[:,1].min()-1,X[:,1].max()+1
xx,yy=np.meshgrid(np.arange(x_min,x_max, .02),np.arange(y_min,y_max, .02))
Z=clf.predict(np.c_[xx.ravel(),yy.ravel()])
Z=Z.reshape(xx.shape)
plt.pcolormesh(xx,yy,Z,cmap=plt.cm.Pastel1)
plt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.spring,edgecolor='k')
plt.xlim(xx.min(),xx.max())
plt.ylim(yy.min(),yy.max())
plt.title("Classifier:KNN")

同理:

data2=make_blobs(n_samples=500,centers=5,random_state=8)

X2,y2=data2
plt.scatter(X2[:,0],X2[:,1],c=y2,cmap=plt.cm.spring,edgecolor='k')
plt.show()

knn sklearn相关推荐

  1. K 近邻法(K-Nearest Neighbor, K-NN)

    文章目录 1. k近邻算法 2. k近邻模型 2.1 模型 2.2 距离度量 2.2.1 距离计算代码 Python 2.3 kkk 值的选择 2.4 分类决策规则 3. 实现方法, kd树 3.1 ...

  2. Python3入门机器学习(七)- PCA

    由于简书不支持目录结构.文章备份了一份在gitbook,结构更清晰,地址:book.markgao.me/ 1.PCA简介 PCA(Principal Component Analysis):也是一个 ...

  3. python算法完整教程专栏完整目录

    python算法完整教程专栏完整目录 专栏说明如下 专栏目录 专栏说明如下 内容:python算法完整教程 数量:692篇博文(2023年2月15日截止) 更新时间至:2023年2月15日(后续加上去 ...

  4. 算法(Python版)|156Kstars|神级项目-(1)The Algorithms - Python简介

    文章目录 算法(Python版) 项目地址 项目概况 说明 参与入门 社区频道 算法列表 Arithmetic Analysis 算术分析 Audio Filters 音频过滤器 Backtracki ...

  5. python算法工程师简历_7 年算法工程师的工作总结,太精辟了!

    原标题:7 年算法工程师的工作总结,太精辟了! 大家好,我是chris,入行前5年在一家上市游戏公司做算法,从数据挖掘算法在业务线落地开始,涉及机器学习.深度学习,后来逐步负责整个算法团队建设. 现在 ...

  6. 机器学习算法--python--sklearn--后续神经网络

    机器学习算法 1 概念 机器学习算法分类:监督学习.无监督学习.强化学习 基本的机器学习算法:线性回归.支持向量机(SVM).最近邻居(KNN).逻辑回归.决策树.k平均.随机森林.朴素贝叶斯.降维. ...

  7. Weighted distance in sklearn KNN

    Weighted distance in sklearn KNN 我正在制定一种遗传算法来查找权重,以便将其应用于sklearn KNN中的欧几里得距离,试图提高分类率并删除数据集中的某些特征(我通过 ...

  8. 【Python-ML】SKlearn库K近邻(KNN) 使用

    # -*- coding: utf-8 -*- ''' Created on 2018年1月15日 @author: Jason.F @summary: Scikit-Learn库K近邻分类算法 '' ...

  9. 机器学习Sklearn实战——KNN算法

    KNN鸢尾花分类 import matplotlib.pyplot as plt from sklearn.neighbors import KNeighborsClassifier from skl ...

最新文章

  1. 我的第二故乡 – 广州
  2. 移动apn接入点哪个快_移动4g网速最快接入点_2020移动最佳APN接入点
  3. 在Struts 2.0中国际化(i18n)您的应用程序
  4. 接口转发和重定向区别(四)
  5. ase支持 urp不_urp管线的自学hlsl之路 第一篇 序言
  6. JAVA 一个或多个空格分割字符串
  7. 音视频开发(2)---red5+java打造直播平台系列 初级
  8. leetcode题解4-寻找两个正序数组的中位数
  9. AndroidStudio安卓原生开发_Fragment_认识使用Fragment_创建_删除fragment---Android原生开发工作笔记116
  10. android中的SharedPreferences存储
  11. 网络舆情分析系统具体使用功能及作用详解
  12. 360浏览器打开Axure
  13. The error occurred while setting parameters
  14. html 页面换皮肤,HTML中如何实现更换网页皮肤
  15. 解决IntelliJ IDEA Properties中Unused property提示
  16. mac辅助功能授权无效
  17. CTex listings宏包出错undefined control sequence,换成verbatim解决问题
  18. Word2vec And Doc2vec - 文本向量化
  19. 自动化的内容生成语言模型如何帮助您赢得seo竞赛
  20. [译]数据包在 Kubernetes 中的一生(2)

热门文章

  1. CSS3选择器-组合选择器
  2. 如何用matlab生成一个单位正交矩阵?
  3. linux 内核usleep,Linux的sleep()和usleep()的使用和区别
  4. vs启动错误:Exception Processing Message 0xc0000005 Parameters...
  5. 信息论与编码课件,希望传播给更多的人
  6. 【001】光学系统的像质评价方法
  7. plotly系列| 使用plotly在地图上绘制散点图和密度图
  8. grep 命令的使用
  9. vanilla-tilt.js平滑3D倾斜库的使用
  10. dwt转为html,如何把dwt页面转换成html页面