作爲一個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'])
一些能解釋一下什麼是Y,_分配功能以及它是如何工作的。它沒有明確地使用,但是如果我將其忽略掉,我會得到一個錯誤。
我需要更多的瞭解代碼。 iris.target和y都與iris.target_names匹配是不是巧合?由於factorize()將輸入值編碼爲分類值,因此不能保證其編碼方式與從iris.target到iris.target_names的映射方式相同。例如0映射到setosa,但是如何保證factorize()在對值進行編碼時執行相同的映射?不知道你是否理解我的問題。謝謝! – zsong