3 回答

TA貢獻1772條經(jīng)驗 獲得超5個贊
實際上有2個警告:
FutureWarning:整數(shù)數(shù)據(jù)的處理將在 0.22 版本中更改。目前,類別是根據(jù)范圍 [0, max(values)] 確定的,而將來它們將根據(jù)唯一值確定。如果您想要未來的行為并消除此警告,您可以指定“categories='auto'”。如果您在此 OneHotEncoder 之前使用 LabelEncoder 將類別轉(zhuǎn)換為整數(shù),那么您現(xiàn)在可以直接使用 OneHotEncoder。
第二個:
'categorical_features' 關(guān)鍵字在 0.20 版中已棄用,并將在 0.22 版中刪除。您可以改用 ColumnTransformer。
“改用 ColumnTransformer。”,DeprecationWarning)
將來,您不應(yīng)直接在 OneHotEncoder 中定義列,除非您想使用“categories='auto'”。第一條消息還告訴您直接使用 OneHotEncoder,而不是先使用 LabelEncoder。最后,第二條消息告訴您使用 ColumnTransformer,它就像用于列轉(zhuǎn)換的管道。
這是您案例的等效代碼:
from sklearn.compose import ColumnTransformer
ct = ColumnTransformer([("Name_Of_Your_Step", OneHotEncoder(),[0])], remainder="passthrough")) # The last arg ([0]) is the list of columns you want to transform in this step
ct.fit_transform(X)
另請參閱:ColumnTransformer 文檔
對于上面的例子;
編碼分類數(shù)據(jù)(基本上將文本更改為數(shù)字數(shù)據(jù),即國家/地區(qū)名稱)
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.compose import ColumnTransformer
#Encode Country Column
labelencoder_X = LabelEncoder()
X[:,0] = labelencoder_X.fit_transform(X[:,0])
ct = ColumnTransformer([("Country", OneHotEncoder(), [0])], remainder = 'passthrough')
X = ct.fit_transform(X)
添加回答
舉報