我在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的使用有什么问题。
答案 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的例子更传统,也是处理对象的更简洁方法。