亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 OneHotEncoder 編碼

使用 OneHotEncoder 編碼

藍山帝景 2022-10-25 09:45:36
我正在嘗試使用 scikitlearn 的 OneHotEncoder 對數據進行預處理。顯然,我做錯了什么。這是我的示例程序:from sklearn.preprocessing import LabelEncoder, OneHotEncoderfrom sklearn.compose import ColumnTransformercat = ['ok', 'ko', 'maybe', 'maybe']label_encoder = LabelEncoder()label_encoder.fit(cat)cat = label_encoder.transform(cat)# returns [2 0 1 1], which seams good.print(cat)ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [0])], remainder='passthrough')res = ct.fit_transform([cat])print(res)最后結果 :[[1.0 0 1 1]]預期結果:類似于:[ [ 1 0 0 ] [ 0 0 1 ] [ 0 1 0 ] [ 0 1 0 ]]有人能指出我錯過了什么嗎?
查看完整描述

1 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

您可以考慮使用 numpy 和 MultiLabelBinarizer。


import numpy as np

from sklearn.preprocessing import MultiLabelBinarizer


cat = np.array([['ok', 'ko', 'maybe', 'maybe']])


m = MultiLabelBinarizer()

print(m.fit_transform(cat.T))

如果你仍然想堅持你的解決方案。您只需要更新如下:


# because of it still a row, not a column

# res = ct.fit_transform([cat])  => remove this


# it should works

res = ct.fit_transform(np.array([cat]).T)


Out[2]:

array([[0., 0., 1.],

       [1., 0., 0.],

       [0., 1., 0.],

       [0., 1., 0.]])


查看完整回答
反對 回復 2022-10-25
  • 1 回答
  • 0 關注
  • 300 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號