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() 的类型错误的主要内容,如果未能解决你的问题,请参考以下文章