在分類標簽編碼中。我知道我需要使用 OneHotEncoder() 因為特征名稱在測驗中不同所以不能使用 pd_dummies。在火車中,我有 x 行,在測驗 1 行中,在 OHE 之后,測驗行更短,我不知道如何將它與火車進行比較。
le = LabelEncoder()
dfle = df.apply(le.fit_transform)
X = dfle.values
ohe = OneHotEncoder(handle_unknown='ignore')
X = ohe.fit_transform(X).toarray()
le = LabelEncoder()
testle = test.apply(le.fit_transform)
y = testle.values
two = OneHotEncoder(handle_unknown='ignore')
y = two.fit_transform(y).toarray()
rf = RandomForestClassifier(n_estimators=100, random_state=0)
rf.fit(X, y)
rf.predict([[ ? ]])
X 和 y 的輸出:
X:
[[0. 0. 1. 0. 0. 1. 0. 1. 0. 0. 1. 0. 1. 0. 0. 0. 1. 0. 0. 1. 0. 0. 1. 0.
0. 1.]
[0. 0. 0. 1. 0. 1. 0. 1. 0. 0. 1. 0. 0. 0. 1. 0. 0. 1. 0. 0. 1. 0. 0. 0.
1. 1.]
[0. 1. 0. 0. 0. 1. 0. 1. 1. 0. 0. 1. 0. 0. 0. 1. 0. 0. 1. 0. 0. 0. 0. 1.
0. 1.]
[1. 0. 0. 0. 1. 0. 1. 0. 0. 1. 0. 0. 0. 1. 0. 1. 0. 0. 0. 0. 0. 1. 0. 1.
0. 1.]]
y:
[[1. 1. 1. 1. 1. 1. 1. 1. 1.]]
uj5u.com熱心網友回復:
首先,我認為你誤解了什么X和y意思。X代表您的功能,y您的目標。它不同于X_train, X_test, y_train, y_test。如果y代表您的測驗資料,您應該將其重命名以更清晰。
在這里,似乎y是您的測驗資料:
在火車上我有 x 行和測驗 1 行
您應該使用您的第一個轉換器(用于X)來轉換(并且只轉換,不適合!)您的資料。
你不應該做的事情:
df1 = pd.DataFrame({'country': ['USA', 'France'], 'language': ['EN', 'FR']})
ohe = OneHotEncoder(sparse=False)
X_train = ohe.fit_transform(df1)
df2 = pd.DataFrame({'country': ['USA'], 'language': ['EN']})
ohe = OneHotEncoder(sparse=False)
X_test = ohe.fit_transform(df2)
# X_train
# array([[0., 1., 1., 0.],
# [1., 0., 0., 1.]])
# X_test
# array([[1., 1.]]) # shape differs from X_train
你應該做什么:
df1 = pd.DataFrame({'country': ['USA', 'France'], 'language': ['EN', 'FR']})
ohe = OneHotEncoder(sparse=False)
X_train = ohe.fit_transform(df1)
df2 = pd.DataFrame({'country': ['USA'], 'language': ['EN']})
X_test = ohe.transform(df2)
# X_train
# array([[0., 1., 1., 0.],
# [1., 0., 0., 1.]])
# X_test
# array([[0., 1., 1., 0.]]) # same shape as X_train
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/455308.html
標籤:Python 熊猫 机器学习 scikit-学习 一热编码
上一篇:使用基類作為引數的方法覆寫錯誤
