2 回答

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
當(dāng)您擁有數(shù)據(jù)框并希望將對(duì)象轉(zhuǎn)換為虛擬變量時(shí),請(qǐng)?jiān)谑褂弥安灰獙⑵洳鸱?get_dummies
df = pd.get_dummies(df)
train = df[cond]
test = df.drop(train.index)
修復(fù)您的代碼
df = pd.get_dummies(pd.concat([train , test]))
train = df[df.index.isin(train.index)]
test = df.drop(train.index)

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果可能的話,最安全的選擇是在使用 之前將列轉(zhuǎn)換為包含所有可能值的分類數(shù)據(jù)類型get_dummies。如果您的訓(xùn)練數(shù)據(jù)經(jīng)常更改(流式傳輸/經(jīng)常更新)并且您想要最大的兼容性,這尤其有用:
x_values = ["a", "b", "c", "d", "e"]
x_type = pd.Categorical(values=x_values)
df = pd.DataFrame(dict(x=["a", "b", "c"], y=[1,2,3]))
不知道可能值“d”、“e”的傻瓜:
x_dummies = pd.get_dummies(df.x)
a b c
0 1 0 0
1 0 1 0
2 0 0 1
知道“d”、“e”的虛擬人存在,即使當(dāng)前數(shù)據(jù)中沒有表示:
df["x"] = df["x"].astype(x_cat)
x_dummies = pd.get_dummies(df.x)
a b c d e
0 1 0 0 0 0
1 0 1 0 0 0
2 0 0 1 0 0
添加回答
舉報(bào)