knn sklearn
区分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相关推荐
- 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 ...
- Python3入门机器学习(七)- PCA
由于简书不支持目录结构.文章备份了一份在gitbook,结构更清晰,地址:book.markgao.me/ 1.PCA简介 PCA(Principal Component Analysis):也是一个 ...
- python算法完整教程专栏完整目录
python算法完整教程专栏完整目录 专栏说明如下 专栏目录 专栏说明如下 内容:python算法完整教程 数量:692篇博文(2023年2月15日截止) 更新时间至:2023年2月15日(后续加上去 ...
- 算法(Python版)|156Kstars|神级项目-(1)The Algorithms - Python简介
文章目录 算法(Python版) 项目地址 项目概况 说明 参与入门 社区频道 算法列表 Arithmetic Analysis 算术分析 Audio Filters 音频过滤器 Backtracki ...
- python算法工程师简历_7 年算法工程师的工作总结,太精辟了!
原标题:7 年算法工程师的工作总结,太精辟了! 大家好,我是chris,入行前5年在一家上市游戏公司做算法,从数据挖掘算法在业务线落地开始,涉及机器学习.深度学习,后来逐步负责整个算法团队建设. 现在 ...
- 机器学习算法--python--sklearn--后续神经网络
机器学习算法 1 概念 机器学习算法分类:监督学习.无监督学习.强化学习 基本的机器学习算法:线性回归.支持向量机(SVM).最近邻居(KNN).逻辑回归.决策树.k平均.随机森林.朴素贝叶斯.降维. ...
- Weighted distance in sklearn KNN
Weighted distance in sklearn KNN 我正在制定一种遗传算法来查找权重,以便将其应用于sklearn KNN中的欧几里得距离,试图提高分类率并删除数据集中的某些特征(我通过 ...
- 【Python-ML】SKlearn库K近邻(KNN) 使用
# -*- coding: utf-8 -*- ''' Created on 2018年1月15日 @author: Jason.F @summary: Scikit-Learn库K近邻分类算法 '' ...
- 机器学习Sklearn实战——KNN算法
KNN鸢尾花分类 import matplotlib.pyplot as plt from sklearn.neighbors import KNeighborsClassifier from skl ...
最新文章
- 我的第二故乡 – 广州
- 移动apn接入点哪个快_移动4g网速最快接入点_2020移动最佳APN接入点
- 在Struts 2.0中国际化(i18n)您的应用程序
- 接口转发和重定向区别(四)
- ase支持 urp不_urp管线的自学hlsl之路 第一篇 序言
- JAVA 一个或多个空格分割字符串
- 音视频开发(2)---red5+java打造直播平台系列 初级
- leetcode题解4-寻找两个正序数组的中位数
- AndroidStudio安卓原生开发_Fragment_认识使用Fragment_创建_删除fragment---Android原生开发工作笔记116
- android中的SharedPreferences存储
- 网络舆情分析系统具体使用功能及作用详解
- 360浏览器打开Axure
- The error occurred while setting parameters
- html 页面换皮肤,HTML中如何实现更换网页皮肤
- 解决IntelliJ IDEA Properties中Unused property提示
- mac辅助功能授权无效
- CTex listings宏包出错undefined control sequence,换成verbatim解决问题
- Word2vec And Doc2vec - 文本向量化
- 自动化的内容生成语言模型如何帮助您赢得seo竞赛
- [译]数据包在 Kubernetes 中的一生(2)
热门文章
- CSS3选择器-组合选择器
- 如何用matlab生成一个单位正交矩阵?
- linux 内核usleep,Linux的sleep()和usleep()的使用和区别
- vs启动错误:Exception Processing Message 0xc0000005 Parameters...
- 信息论与编码课件,希望传播给更多的人
- 【001】光学系统的像质评价方法
- plotly系列| 使用plotly在地图上绘制散点图和密度图
- grep 命令的使用
- vanilla-tilt.js平滑3D倾斜库的使用
- dwt转为html,如何把dwt页面转换成html页面