栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

机器学习中numpy数组的使用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

机器学习中numpy数组的使用

问题背景:

在学习机器学习算法KNN近邻算法时遇到的一个关于bumpy数组使用的问提


问题描述

创建一个数据集,用二维列表分别创建样本的特征和类别。再将创建好的列表数据转numpy的数组。

(这里为什么要将列表转化为numpy数组呢?可以看一些这篇文章numpy数组和列表的区别https://blog.csdn.net/Star_SDK/article/details/80600673

plt.scatter(x_train[y_train0,0],x_train[y_train0,1],color=‘g’)
plt.scatter(x_train[y_train1,0],x_train[y_train1,1],color=‘r’),

这两行代码的作用是筛选出种类是指定类别那一行的第0/1列,比如x_trian[y_train==0,0] ,这行的含义是筛选出种类是0的那一行的第0列,比如:3.39,3.11,1.34,3.58,2.28(为什么是五个呢,因raw_data_y = [0,0,0,0,0,1,1,1,1,1]前五个是0,所以对应个)

疑问在于为什么y_trian 能与x_trian联合使用呢??????

 raw_data_x = [[3.39,2.33], [3.11,1.78], 
 [1.34,3.36], [3.58,4.67], 
 [2.28,2.86], [7.42,4.69], 
 [5.74,3.53], [9.17,2.51],
 [7.79,3.42],[7.93,0.79]]
raw_data_y = [0,0,0,0,0,1,1,1,1,1]

x_train = np.array(raw_data_x)

y_train = np.array(raw_data_y)

plt.scatter(x_train[y_train==0,0],x_train[y_train==0,1],color='g')
plt.scatter(x_train[y_train==1,0],x_train[y_train==1,1],color='r')

plt.show()

原因分析:

X是一个数组,数组的元素是一个二元组。在解释x_train[y_train==0, 0]之前,首先要明白x_train[:,:]左面:代表的是行范围,右边“:”代表的是列范围,如果是冒号则代表全部。那么无论是“:”,还是指定一个范围(类似于(2,3)),其实本质都是会被翻译成一个true/false的一维一元数组,每个元素都是代表数组对应位置的元素是否要出现。

比如,y_train=([0,0,0,0,0,1,1,1,1,1])表面前5个样本属于0这个类别那么
x_train[y_train0, 0],就表示x_train的哪一行返回即[ture(返回),ture(返回),ture(返回),ture(返回),ture(返回),false(不返回)…],前五行返回,后五行不返回。
x_train[y_train
0,0]中的第二个0的意识是返回这一行那一列,x_train[y_train0,0]表示返回类别是0的所有行的第一列
x_train[y_train
0,1]表示返回类别是0的所有行的第二列
x_train[y_train1,0]表示返回类别是1的所有行的第一列
x_train[y_train
1,0]表示返回类别是1的所有行的第二列
这里看到在python里面行列的处理模式是不一样的,行的取舍是通过一个True/ False数组来实现的,列的取舍确实通过指定了那一列;这个其实从矩阵的角度能够更好的理解。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008212.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号