Как относительный новый пользователь Python, я пытаюсь использовать sklearn RandomForestClassifier. Один пример из инструкции для руководства по yhat является следующее:Что делает y, _ назначение в python/sklearn?
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'])
Может кто-нибудь объяснить, что у, _ уступка и как она работает. Он не используется явно, но я получаю сообщение об ошибке, если я его оставлю.
Мне нужно больше понимания кода. Разве это просто совпадение, что iris.target и y все совпадают с iris.target_names? Так как factorize() кодирует входное значение в категориальное значение, и нет гарантии, что он кодирует тот же самый способ, который используется как сопоставление от iris.target к iris.target_names. Например, 0 сопоставляется с setosa, но как гарантируется, что factorize() выполняет одно и то же отображение при кодировании значений? Не уверен, понимаете ли вы мой вопрос. Благодаря! – zsong