LabelEncoder.fit_transform() 的类型错误

Posted

技术标签:

【中文标题】LabelEncoder.fit_transform() 的类型错误【英文标题】:type error with LabelEncoder.fit_transform() 【发布时间】:2018-05-23 08:19:05 【问题描述】:

我在 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 有什么问题。

【问题讨论】:

【参考方案1】:

尝试使用以下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]

【讨论】:

我明白了问题所在。在设置 le = LabelEncoder() 之后,我应该使用 LabelEncoder().fit_transform(df['Sex']) 或 le.fit_transform(df['Sex'])。我在代码中的 LabelEncoder 之后缺少 () 。感谢您指出这一点! 太棒了! Happy Coding.【参考方案2】:

您只是缺少初始化LabelEncoder 实例的()

这将起作用:LabelEncoder().fit_transform(df['Sex'])

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

【讨论】:

是的,我现在意识到了问题所在。谢谢!

以上是关于LabelEncoder.fit_transform() 的类型错误的主要内容,如果未能解决你的问题,请参考以下文章