我正在使用經典的泰坦尼克號資料集。我曾經OneHotEncoder對人的姓氏進行編碼。
transformer = make_column_transformer((OneHotEncoder(sparse=False), ['Surname']), remainder = "drop")
encoded_surname = transformer.fit_transform(titanic)
titanic['Encoded_Surname'] = list(encoded_surname.astype(np.float64))
這是我的資料框的樣子:

這是我在尋找時得到的.info():
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Survived 891 non-null int64
1 Pclass 891 non-null int64
2 Sex 891 non-null int64
3 SibSp 891 non-null int64
4 Parch 891 non-null int64
5 Fare 891 non-null float64
6 Encoded_Surname 891 non-null object
dtypes: float64(1), int64(5), object(1)
由于Encoded_Surname標簽是一個物件而不是其他數字,因此我無法將資料放入分類器模型中。
如何將np.array我得到的OneHotEncoder變成數字資料?
uj5u.com熱心網友回復:
IIUC,為encoded_surname資料創建一個新的資料框并將其連接到您的原始資料集:
transformer = make_column_transformer((OneHotEncoder(sparse=False), ['Surname']), remainder = "drop")
encoded_surname = transformer.fit_transform(titanic)
titanic = titanic.join(pd.DataFrame(encoded_surname, dtype=int).add_prefix('Encoded_Surname'))
uj5u.com熱心網友回復:
我建議你使用pd.get_dummies而不是OneHotEncoder. 如果你真的想使用OneHotEncoder:
ohe_df = pd.DataFrame(encoded_surname, columns=transformer.get_feature_names())
#concat with original data
titanic = pd.concat([titanic, ohe_df], axis=1).drop(['Surname'], axis=1)
如果您可以使用pd.get_dummies:
titanic = pd.get_dummies(titanic, prefix=['Surname'], columns=['Surname'], drop_first=True)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/370333.html
