3 回答
TA贡献1772条经验 获得超5个赞
实际上有2个警告:
FutureWarning:整数数据的处理将在 0.22 版本中更改。目前,类别是根据范围 [0, max(values)] 确定的,而将来它们将根据唯一值确定。如果您想要未来的行为并消除此警告,您可以指定“categories='auto'”。如果您在此 OneHotEncoder 之前使用 LabelEncoder 将类别转换为整数,那么您现在可以直接使用 OneHotEncoder。
第二个:
'categorical_features' 关键字在 0.20 版中已弃用,并将在 0.22 版中删除。您可以改用 ColumnTransformer。
“改用 ColumnTransformer。”,DeprecationWarning)
将来,您不应直接在 OneHotEncoder 中定义列,除非您想使用“categories='auto'”。第一条消息还告诉您直接使用 OneHotEncoder,而不是先使用 LabelEncoder。最后,第二条消息告诉您使用 ColumnTransformer,它就像用于列转换的管道。
这是您案例的等效代码:
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 文档
对于上面的例子;
编码分类数据(基本上将文本更改为数字数据,即国家/地区名称)
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)
添加回答
举报