Python 如何对分类数据使用ColumnTransformer?
我正在尝试预处理数据Python 如何对分类数据使用ColumnTransformer?,python,scikit-learn,Python,Scikit Learn,我正在尝试预处理数据 data = {'Country':['Germany', 'Turkey', 'England', 'Turkey', 'Germany', 'Turkey'], 'Age':['44', '32', '27', '29', '31', '25'], 'Salary':['5400', '8500', '7200', '4800', '6200', '10850'], 'Purchased':['yes', 'yes', '
data = {'Country':['Germany', 'Turkey', 'England', 'Turkey', 'Germany', 'Turkey'],
'Age':['44', '32', '27', '29', '31', '25'],
'Salary':['5400', '8500', '7200', '4800', '6200', '10850'],
'Purchased':['yes', 'yes', 'no', 'yes', 'no', 'yes']}
df = pd.DataFrame(data)
X = df.iloc[:,0].values
预期结果如下:
|---|---|---|----|-------|---|
| 1 | 0 | 0 | 44 | 5400 | 1 |
| 0 | 1 | 0 | 32 | 8500 | 1 |
| 0 | 0 | 1 | 27 | 7200 | 0 |
| 0 | 1 | 0 | 29 | 4800 | 1 |
| 1 | 0 | 0 | 31 | 6200 | 0 |
| 0 | 1 | 0 | 25 | 10850 | 1 |
下面是失败的代码
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
ct = ColumnTransformer([("city_category", OneHotEncoder(dtype='int'), [0])], remainder="passthrough")
X = ct.fit_transform(X)
输出:
IndexError: tuple index out of range
我想了解在这种情况下如何使用ColumnTransformer功能?无需sklearn,您可以使用pandas:
将熊猫作为pd导入
数据={
“国家”:[“德国”、“土耳其”、“英国”、“土耳其”、“德国”、“土耳其”],
“年龄”:[“44”、“32”、“27”、“29”、“31”、“25”],
“工资”:[“5400”、“8500”、“7200”、“4800”、“6200”、“10850”],
“购买”:[“是”、“是”、“否”、“是”、“否”、“是”],
}
df=pd.DataFrame(数据)
df=pd.concat([pd.get_dummies(df[“Country”]),df.drop(“Country”,axis=1)],axis=1)
df[[“年龄”、“薪资”]=df[[“年龄”、“薪资”]].aType(int)
df[“购买的”]=df[“购买的”].map(lambda x:x==“是”).astype(int)
打印(df.head())
输出为:
England Germany Turkey Age Salary Purchased
0 0 1 0 44 5400 1
1 0 0 1 32 8500 1
2 1 0 0 27 7200 0
3 0 0 1 29 4800 1
4 0 1 0 31 6200 0
您能否编辑您的问题以提供一些示例数据和完整的错误回溯?这将有助于我们更好地帮助你,希望现在一切都清楚了。
X_transformer = ColumnTransformer(
transformers=[
("Country", # Just a name
OneHotEncoder(), # The transformer class
[0] # The column(s) to be applied on.
)
], remainder='passthrough'
)
X = X_transformer.fit_transform(X)
print(X)