LabelEncoder.fit_transform()的类型错误

时间:2017-12-09 04:30:13

标签: python-3.x pandas scikit-learn

我在Kaggle(https://www.kaggle.com/c/titanic/data)上玩Titanic数据集,我想使用sklearn.preprocessing中的LabelEncoder来改变Sex,最初将其标记为“男性”或“女性”为“0”或“ 1。我有以下四行代码,

import pandas as pd
from sklearn.preprocessing import LabelEncoder
df = pd.read_csv('titanic.csv')
df['Sex'] = LabelEncoder.fit_transform(df['Sex'])  

但是当我运行它时,我收到以下错误消息:

TypeError: fit_transform() missing 1 required positional argument: 'y'

错误来自第4行,即

df['Sex'] = LabelEncoder.fit_transform(df['Sex']) 

我想知道这里出了什么问题。虽然我知道我也可以使用map进行转换,这可能更简单,但我仍然想知道我对LabelEncoder的使用有什么问题。

2 个答案:

答案 0 :(得分:5)

尝试使用以下link to sklearn。 LabelEncoder是一个实用程序类,需要使用LabelEncoder()创建对象:

le = LabelEncoder()
df['Sex'] = le.fit_transform(df['Sex'])

使用示例进行测试:

# create test series
gender = pd.Series(['male', 'female', 'male'])

le = LabelEncoder()
transformed_val = le.fit_transform(gender)

# checking result after using label encoder
print(transformed_val)

结果:

[1 0 1]

答案 1 :(得分:1)

您只是错过了初始化()实例的LabelEncoder

这将有效:LabelEncoder().fit_transform(df['Sex'])

话虽如此,0p3n5ourcE的例子更传统,也是处理对象的更简洁方法。