赞
踩
最近在尝试自己绘制ROC曲线上踩了个小坑,记录一下
# Import some data to play with
iris = datasets.load_iris()
X = iris.data
y = iris.target
##变为2分类
X, y = X[y != 2], y[y != 2]
看代码的时候,个人理解是把标签里面0,1的标签改为true(1)标签是2的标签则改为false(0),就是把其中的两类标签合并成一类。于是自己动手尝试了一下。
x = [1,2,3,4,5,6]
y = [0,0,1,1,2,2]
y!=2
Out[4]: True
x[y!=2]
Out[5]: 2
发现和想象的不太一样,y!=2输出竟然只是一个true,而不是一个true数组。
后来使用debug模式才发现鸢尾花数据集其实是一个矩阵。而我测试创建的xy是一个列表。
列表与数组的区别
列表是由一系列按特定顺序排列的元素组成,可以将任何东西加入列表中,其中的元素之间没有任何关系;
Python中的列表(list)用于顺序存储结构。它可以方便、高效的的添加删除元素,并且列表中的元素可以是多种类型。
数组也就是一个同一类型的数据的有限集合。
列表list与数组array的相同点:
a. 都可以根据索引来取其中的元素;
列表list与数组array的不同点:
a.列表list中的元素的数据类型可以不一样。数组array里的元素的数据类型必须一样;
b.列表list不可以进行数学四则运算,数组array可以进行数学四则运算;
c.相对于array,列表会使用更多的存储空间。
因此再次尝试:
import numpy as np
x = np.array([1,2,3,4,5,6])
y = np.array([0,0,1,1,2,2])
y != 2
Out[10]: array([ True, True, True, True, False, False])
x[y!=2]
Out[12]: array([1, 2, 3, 4])
成功二分类
总结:
对于列表对象,直接等式判断是对整个列表进行判断。
对于矩阵对象,等式判断会对数组内的每一个元素进行判断。
大概是因为列表list中的元素的数据类型可以不一样。数组array里的元素的数据类型必须一样。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。