经过一次热编码,而不是列,我的行数正在增加

数据挖掘 机器学习 Python scikit-学习 分类数据
2022-03-05 01:31:07

这是代码:

housing_cat1 = X_train[:,[2,7,8,10,11,13,14,15,16,21,22,23,24,25,27,28,29,30,31,32,33,35,39,40,41,42,53,55,57,58,60,63,64,65,73,74,78,79]].reshape(1,-1)

from future_encoders import OneHotEncoder

cat_encoder = OneHotEncoder(sparse=False)                  # Set to True if sparse matrix is needed
housing_cat_1_1hot = cat_encoder.fit_transform(housing_cat)
housing_cat_1_1hot
2个回答

pandas 的get_dummies函数也可以用于此。只需使用您的数据创建一个 pandas 数据框并将其应用于此函数。无需列出分类变量:

X_train_df = pandas.DataFrame(data=X_train)
X_train_df_1hot = pandas.get_dummies(X_train_df)

您还可以为新列指定前缀等:

pandas.get_dummies(data, prefix=None, prefix_sep='_', 
     dummy_na=False, columns=None, 
     sparse=False, drop_first=False, 
     dtype=None)

作为列表列表的数据可通过.values属性获得,该属性可以转换为 numpy 数组:

housing_cat_1hot = numpy.array(X_train_df_1hot.values)

Housing_cat1的形状是什么,housing_cat_1hot的形状是什么?

您不应该重塑为 (1, -1)。这会获取所有数据并将其放在一长排中。