IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 01-KNN(K最临近算法)中涉及到的一些小知识点 -> 正文阅读

[Python知识库]01-KNN(K最临近算法)中涉及到的一些小知识点

作者:recommend-item-box type_blog clearfix

一、引例

例子来源于《深入浅出Python机器学习》,这里引用只用于学习,若有侵权,请联系删除

# 导入数据集生成器
from sklearn.datasets import make_blobs
# 导入KNN分类器
from sklearn.neighbors import KNeighborsClassifier
# 导入画图工具
import matplotlib.pyplot as plt
# 导入数据集拆分工具
from sklearn.model_selection import train_test_split
# 生成样本数为200,分类为2的数据集
data = make_blobs(n_samples=200, centers=2, random_state=8)
X,y = data
plt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.spring,edgecolors='k')
plt.show()

在这里插入图片描述

import numpy as np
clf = KNeighborsClassifier()
clf.fit(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
#meshgrid()函数,生成坐标点网格矩阵
xx, yy = np.meshgrid(np.arange(x_min, x_max,0.02), np.arange(y_min, y_max, 0.02))
#ravel()降维,np.c_()按列堆叠即按行拼接,这里把两个坐标轴数组变成了一个网格点矩阵
#np.c_之后的维度是网格点数*2(1列横坐标,1列纵坐标)
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, edgecolors='k')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title("Classifier:KNN")
plt.show()

在这里插入图片描述

二、sklearn的make_blobs方法

在第一段代码中使用到了make_blobs()方法,其语法结构如下:

sklearn.datasets.make_blobs(n_samples=100,
							n_features=2,
							centers=3,
							cluster_std=1.0,
							center_box=(-10.0,10.0),
							shuffle=True,
							random_state=None)

make_blobs函数是为聚类产生数据集,产生一个数据集和相应的标签
n_samples:表示数据样本点个数,默认值100
n_features:是每个样本的特征(或属性)数,也表示数据的维度,默认值是2
centers:表示类别数(标签的种类数),默认值3
cluster_std表示每个类别的方差,例如我们希望生成2类数据,其中一类比另一类具有更大的方差,可以将cluster_std设置为[1.0,3.0],浮点数或者浮点数序列,默认值1.0
center_box:中心确定之后的数据边界,默认值(-10.0, 10.0)
shuffle :将数据进行洗乱,默认值是True
random_state:官网解释是随机生成器的种子,可以固定生成的数据,给定数之后,每次生成的数据集就是固定的。若不给定值,则由于随机性将导致每次运行程序所获得的的结果可能有所不同。在使用数据生成器练习机器学习算法练习或python练习时建议给定数值。
参考链接:
文章1
文章2
此时,对第一段代码中的data = make_blobs(n_samples=200, centers=2, random_state=8)进行分析,意思为生成样本数200,分类为2,随机种子设置为8(固定,便于重复实验)
X,y = data,注意data中既包含了数据,也包含了标签
在这里插入图片描述
其中X为200行,2列的二维数据数据,y为长度的200的一维标签数组
并且X的两列表示2个不同的属性,y代表的是具体的样本(每一行)对应的分类,y是二值0-1变量。

三、matplotlib库中的scatter函数

导入库的常用操作:import matplotlib.pyplot as plt
plt.scatter()用于绘制散点图,其语法结构如下所示:

matplotlib.pyplot.scatter(x, y, 
								s=20, 
								c='b', 
								marker='o', 
								cmap=None, 
								norm=None, 
								vmin=None, 
								vmax=None, 
								alpha=None, 
								linewidths=None, 
								verts=None, 
								hold=None, 
								**kwargs)
  • x,y:表示的是shape大小为(n,)的数组,也就是我们即将绘制散点图的数据点,输入数据。
  • s:表示的是大小,是一个标量或者是一个shape大小为(n,)的数组,可选,默认20。
  • c:表示的是色彩或颜色序列,可选,默认蓝色’b’。但是c不应该是一个单一的RGB数字,也不应该是一个RGBA的序列,因为不便区分。c可以是一个RGB或RGBA二维行数组。如y表示yellow,b表示bule,g表示green,r表red,w表示white
  • marker:MarkerStyle,表示的是标记的样式,可选,默认’o’。
  • cmap:Colormap,标量或者是一个colormap的名字,cmap仅仅当c是一个浮点数数组的时候才使用。如果没有申明就是image.cmap,可选,默认None。
  • norm:Normalize,数据亮度在0-1之间,也是只有c是一个浮点数的数组的时候才使用。如果没有申明,就是默认None。
  • vmin,vmax:标量,当norm存在的时候忽略。用来进行亮度数据的归一化,可选,默认None
  • alpha:标量,0-1之间,可选,默认None。
  • linewidths:也就是标记点的长度,默认None。

参考文章:文章3
其中的cmap这一参数,代表“调色盘”的意思,我个人理解为colors map(颜色地图–>颜色分布图–>调色盘)
第一段代码中plt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.spring,edgecolors='k')的plt.cm.spring代表的是一种色系,主要一粉色和黄色为主。edgecolors指定圆点的边的颜色。

四、第二段代码

第二段代码中先是使用KNN分类器对现有数据集进行训练
然后进行可视化
参考文章:文章4
其中numpy.ravel()表示将多维数组转为一维数组:
在这里插入图片描述
numpy.c_[ ]表示将两个数组按列合并

在这里插入图片描述
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
这里实际是将meshgrid得到的坐标矩阵的横坐标和纵坐标进行配对(拼接)得到网格点的完整坐标,然后进行分类预测
在这里插入图片描述

plt.pcolormesh的作用在于能够直观表现出分类边界
参考文章:利用plt.pcolormesh绘制分类图

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:28:59  更:2022-10-17 12:29:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 3:14:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计