如何在 sklearn 中使用一个热编码器转换分类列
How to transform categorical column using one hot encoder in sklearn
我有一个带有分类列的数据框,我正在尝试 one hot encode
使用下面的代码片段 sklearn
它
oneEncoder= OneHotEncoder()
features['COL2'] = features['COL2'].apply(lambda col : oneEncoder.fit_transform(col))
但它一直在抛出
ValueError: Expected 2D array, got scalar array instead:
array=1771. Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
我也试过了
oneEncoder= OneHotEncoder() #initializing an object of class LabelEncoder
oneEncoder.fit_transform( features['COL2'])
但它抛出
ValueError: Expected 2D array, got 1D array instead:
你可以直接做
categories = pd.get_dummies(features['COL2'])
否则你可以传递一个二维数组
oneEncoder.fit_transform( features[['COL2']].values)
尝试:
oneEncoder.fit_transform(df[["Col2"]]).todense()
假设我们有:
features = pd.DataFrame({"Col2":["a","b","c"]})
然后:
oneEncoder= OneHotEncoder()
oneEncoder.fit_transform(features[["Col2"]]).todense()
matrix([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
如果您正在处理一个 Series
对象,您可能希望重塑它:
oneEncoder.fit_transform(features.Col2.values.reshape(-1,1)).todense()
matrix([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
删除 todense()
方法会使您的变换保留在稀疏矩阵中。
最后,您总是可以通过以下方式解码矩阵列的含义:
oneEncoder.categories_
[array(['a', 'b', 'c'], dtype=object)]
毫不奇怪,它们是您按字母顺序排列的唯一输入。
我有一个带有分类列的数据框,我正在尝试 one hot encode
使用下面的代码片段 sklearn
它
oneEncoder= OneHotEncoder()
features['COL2'] = features['COL2'].apply(lambda col : oneEncoder.fit_transform(col))
但它一直在抛出
ValueError: Expected 2D array, got scalar array instead:
array=1771. Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
我也试过了
oneEncoder= OneHotEncoder() #initializing an object of class LabelEncoder
oneEncoder.fit_transform( features['COL2'])
但它抛出
ValueError: Expected 2D array, got 1D array instead:
你可以直接做
categories = pd.get_dummies(features['COL2'])
否则你可以传递一个二维数组
oneEncoder.fit_transform( features[['COL2']].values)
尝试:
oneEncoder.fit_transform(df[["Col2"]]).todense()
假设我们有:
features = pd.DataFrame({"Col2":["a","b","c"]})
然后:
oneEncoder= OneHotEncoder()
oneEncoder.fit_transform(features[["Col2"]]).todense()
matrix([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
如果您正在处理一个 Series
对象,您可能希望重塑它:
oneEncoder.fit_transform(features.Col2.values.reshape(-1,1)).todense()
matrix([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
删除 todense()
方法会使您的变换保留在稀疏矩阵中。
最后,您总是可以通过以下方式解码矩阵列的含义:
oneEncoder.categories_
[array(['a', 'b', 'c'], dtype=object)]
毫不奇怪,它们是您按字母顺序排列的唯一输入。