y,_赋值在python / sklearn中做什么?

时间:2014-02-07 10:45:11

标签: python scikit-learn

作为Python的相对新人我试图使用sklearn RandomForestClassifier。 yhat的操作指南中的一个示例如下:

from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np

iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['is_train'] = np.random.uniform(0, 1, len(df)) <= .75
df['species'] = pd.Factor(iris.target, iris.target_names)
df.head()

train, test = df[df['is_train']==True], df[df['is_train']==False]

features = df.columns[:4]
clf = RandomForestClassifier(n_jobs=2)
y, _ = pd.factorize(train['species']) # assignment I don't understand
clf.fit(train[features], y)

preds = iris.target_names[clf.predict(test[features])]
pd.crosstab(test['species'], preds, rownames=['actual'], colnames=['preds'])

有些人可以解释y,_赋值的作用以及它的工作原理。它没有明确使用,但如果我把它遗漏,我会收到错误。

2 个答案:

答案 0 :(得分:8)

您将返回的元组分解为两个不同的值y_

_是“我不再需要那个价值”的惯例。

它基本上与:

相同
y = pd.factorize(train['species'])[0]

除了这个代码适用于任何至少有1个元素的可索引返回值,而你的代码在返回值中明确需要两个项目。

答案 1 :(得分:3)

这意味着pd.factorize(train['species'])返回两个项目的元组/列表/生成器/可迭代。在Python中你可以做到

x, y = [1, 2]

现在x == 1y == 2。在您的情况下,y成为第一个值,变量_成为第二个值。下划线_通常用作不会被使用的变量的名称。