我正在尝试使用ROC指标进行交叉验证来评估分类器,我发现以下来自Scikit的代码学习:
# 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
?
谢谢!
Iris数据集有三个标记为0,1,2的类。当您看到X, y = X[y != 2], y[y != 2]
时,它只表示X和y的新值不包含带有标签2的类的记录。
下面是它的工作原理。 y != 2
返回一个等于y长度的布尔向量,当y为0或1时包含True,而根据给定条件y!= 2,则返回False,其中y为2。 [True, False, False, ...]
。它有时也被称为面具。
y[y != 2]
是基于布尔的索引,它返回一个由y元素组成的新数组,其中y不是2。结果数组不包含2。
最后,X[y != 2]
返回一个新的数组X,其中的元素对应于掩码的True值。
由于X和y具有相同的长度,因此对其应用相同的掩模非常有效,并且在这种情况下,有效地删除了具有类标签2的所有记录。
现在,为了从数据集中删除整个类 - 这是您应该在阅读的教程中查找的内容。
X.shape返回一个元组,其中包含数据帧中的行数和列数。这就是数据科学家所称的样本和特征。