【问题标题】:type error with LabelEncoder.fit_transform()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 有什么问题。

【问题讨论】:

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


    【解决方案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 的示例更传统,也是处理对象的更简洁的方式。

    【讨论】:

    • 是的,我现在意识到了问题所在。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多