我正在尝试使用ROC指标进行交叉验证以评估分类器,并且从Scikit learning中获得了以下代码:
# Import some data to play with
iris = datasets.load_iris()
X = iris.data
y = iris.target
X, y = X[y != 2], y[y != 2]
n_samples, n_features = X.shape
我在理解X,y = X[y!=2],y[y!=2]
行时遇到麻烦,此行的目的是什么?
另外,有人可以帮我澄清下划线的用法吗?
n_samples, n_features
?
谢谢!
答案 0 :(得分:2)
虹膜数据集具有三个标记为0、1、2的类。
当你看到
X, y = X[y != 2], y[y != 2]
这只是意味着X和y的新值将不包含带有标签2的类的记录。
这是它的工作方式。
y != 2
返回一个等于y长度的布尔向量,根据给定条件y!= 2,该向量包含y为0或1时的True和y为2的False。 [True, False, False, ...]
。有时也称为面具。
y[y != 2]
是基于布尔的索引,它返回一个由y的元素组成的新数组,其中y不是2。结果数组将不包含2s。
最后,X[y != 2]
返回一个新数组X,该数组的元素与掩码的True值相对应。
由于X和y的长度相同,因此对其应用相同的掩码非常有效,并且在这种情况下,有效地删除了所有带有类标签2的记录。
现在,为了从数据集中删除整个类,这是您应该在正在阅读的教程中寻找的东西。
X.shape返回一个元组,该元组包含数据框中的行数和列数。这就是数据科学家所说的样本和功能。