【发布时间】:2017-11-19 22:57:06
【问题描述】:
这是包含 3 列和 3 行的数据集
命名组织部门
Manie ABC2 财经
乔伊斯 ABC1 HR
阿米 NSV2 人力资源
这是我的代码:
现在到这里都很好,我如何删除每个虚拟变量列的第一个?
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('Data1.csv',encoding = "cp1252")
X = dataset.values
# Encoding categorical data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X_0 = LabelEncoder()
X[:, 0] = labelencoder_X_0.fit_transform(X[:, 0])
labelencoder_X_1 = LabelEncoder()
X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1])
labelencoder_X_2 = LabelEncoder()
X[:, 2] = labelencoder_X_2.fit_transform(X[:, 2])
onehotencoder = OneHotEncoder(categorical_features = "all")
X = onehotencoder.fit_transform(X).toarray()
【问题讨论】:
-
pandas 有
get_dummies(),它有一个参数drop_first你可以设置为True。下面是一个使用 get_dummies 的例子:stackoverflow.com/a/43971156/1870832 -
Hey Max Power,我试过 X = pd.get_dummies(X, drop_first=True)),但它显示错误 SyntaxError: invalid syntax
-
在下面查看我的答案并测试输出。我猜你的语法错误来自你代码的另一部分。
-
你的 X 来自
read_csv作为 Pandas DatafFrame。尝试将dataset传递给pd.get_dummies(),然后再使用.values。如果你希望 one-hot-encoded 输出是一个 numpy 数组,你可以取.values的输出pd.get_dummies -
查看我的更新答案。抱歉耽搁了,我想我们在不同的时区,我睡着了。
标签: python pandas machine-learning scikit-learn