gpt4 book ai didi

python - 将 LabelEncoder 用于 scikit learn 中的一系列

转载 作者:太空宇宙 更新时间:2023-11-04 00:46:11 25 4
gpt4 key购买 nike

我在数据集中有一个具有分类值的列,我想将它们转换为数值。我正在尝试使用 LabelEncoder,但这样做时出错。

from sklearn.preprocessing import LabelEncoder
m = hsp_train["Alley"]
m_enc = LabelEncoder()
j = m_enc.fit_transform(m)

我收到一个错误:

unorderable types: float() > str()

列中的系列有 3 个值。我希望它们分别为 0、1、2,但出现该错误。

我也试过这个:

l = hsp_train["Alley"]
l_enc = pd.factorize(l)
hsp_train["Alley"] = l_enc[0]

但这给了我值 -1、1、2。我不想要我想要它从 1 开始。

最佳答案

很明显,您的系列中存在缺失值。如果您想从系列中删除 NaN 值,只需执行 hsp_train["Alley"].dropna()

插图:

df = pd.DataFrame({'Categorical': ['apple', 'mango', 'apple', 
'orange', 'mango', 'apple',
'orange', np.NaN]})

使用 LabelEncoder 对分类标签进行编码:

enc = LabelEncoder()
enc.fit_transform(df['Categorical'])

给予:

TypeError: unorderable types: float() > str()

默认情况下,执行 pd.factorize 会自动将 -1 分配给缺失值,因此您会得到这些值:

pd.factorize(df['Categorical'])[0]
array([ 0, 1, 0, 2, 1, 0, 2, -1])

如果您不想识别 NAN 值并将它们视为任何字符串,您可以在使用 na_filter 读取过程时执行此操作:

df = pd.read_csv(data, na_filter=False, ...)

它还大大提高了读取相对较大文件的性能。


或者,您可以使用 fillna 将所有 NaN 值填充到您选择的所需字符串中:

df.fillna('Na', inplace=True)

这会将所有 NaN 值替换为您的字符串值“Na”,您可以像以前一样继续。

关于python - 将 LabelEncoder 用于 scikit learn 中的一系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39494001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com