SKLearn:标签编码分类值的虚拟变量
Posted
技术标签:
【中文标题】SKLearn:标签编码分类值的虚拟变量【英文标题】:SKLearn: Dummy Variables for Label Encoded Categorical Values 【发布时间】:2020-02-29 23:11:37 【问题描述】:我首先从 excel 数据集中设置我的 X 并将其转换为矩阵值:
X = dataset.iloc[:, 3:13].values
所以我有两列 X 我需要标记编码(国家和性别)。共有三个国家,西班牙、法国和德国,而且只有两种性别。我对它们进行标记编码:
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X_1 = LabelEncoder()
X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1]) # the three countries
labelencoder_X_2 = LabelEncoder()
X[:, 2] = labelencoder_X_2.fit_transform(X[:, 2])
好的,现在我需要为这三个国家创建虚拟变量,因为它们不存在一个值高于另一个值的等级关系。但是,新代码不起作用:
onehotencoder = OneHotEncoder(categorical_features = [1])
X = onehotencoder.fit_transform(X).toarray()
X = X[:, 1:]
此代码不起作用。我读到现在使用带有 Onehotencoding 的 ColumnTransformer 来创建虚拟变量,但我很难弄清楚。我确实导入了必要的包。这个我试过了,还是不行:
columnTransformer = ColumnTransformer([('encoder', OneHotEncoder(), [1])], remainder='passthrough')
X = columnTransformer.fit_transform(X)
有人可以帮忙吗?谢谢。我只想在标签编码后对三个国家进行热编码。
【问题讨论】:
能否请您发布一些您正在处理的数据框示例? 【参考方案1】:获得假人的最简单方法是使用 pandas get_dummies 函数。在这里,您甚至不需要对数据进行 Label 编码。
df_country = pd.get_dummies(X[:, 1])
df_gender = pd.get_dummies(X[:, 2]
现在,您获得了两个数据框,其中一个根据国家和性别列进行了热编码。您现在可以将其附加到数据框 X 并删除原始的性别和国家列。 X = pd.concat([X, df_country, df_gender], 轴 = 1)
【讨论】:
以上是关于SKLearn:标签编码分类值的虚拟变量的主要内容,如果未能解决你的问题,请参考以下文章
将分类变量转换为伪变量后,如何从sklearn api中找到功能的重要性?
标称变量(Categorical Features)或者分类变量(Categorical Features)编码为数值变量(Continuous Features)