Python의 새로운 상대로서 나는 sklearn RandomForestClassifier를 사용하려고합니다. A는 어떻게에 yhat에 의해 인도에서 하나의 예는 다음과 같다 :파이썬/sklearn에서 y, _ assignment는 무엇을합니까?
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를 _ 할당이 수행하고 작동 방법을 설명합니다. 명시 적으로 사용되지는 않지만 제외하면 오류가 발생합니다.
코드에 대한 이해가 더 필요합니다. iris.target과 y가 모두 iris.target_names와 일치한다는 것은 다소 우연한 일치입니까? factorize()는 입력 값을 범주 값으로 인코딩하기 때문에 iris.target에서 iris.target_names 로의 매핑과 같은 방식으로 인코딩된다는 보장은 없습니다. 예를 들어, 0은 setosa에 매핑되지만, factorize()가 값을 인코딩 할 때 동일한 매핑을 보장하는 방법은 무엇입니까? 내 질문을 이해하면 확실하지 않습니다. 감사! – zsong