gpt4 book ai didi

python - 立即在所有列上运行 sklearn labelencoder

转载 作者:行者123 更新时间:2023-11-28 21:37:15 24 4
gpt4 key购买 nike

Image of ull error

我正在尝试在对象类型的所有列上运行LabelEncoder。这是我编写的代码,但它引发了此错误:

TypeError: '<' not supported between instances of 'int' and 'str'

有人知道如何解决这个问题吗?

le=LabelEncoder()
for col in X_test.columns.values:
if X_test[col].dtypes=='object':
data=X_train[col].append(X_test[col])
le.fit(data.values)
X_train[col]=le.transform(X_train[col])
X_test[col]=le.transform(X_test[col])

最佳答案

看起来附加时它有不同的类型。您尝试全部转换为 str拟合方法:

le.fit(data.values.astype(str))

并且您必须将数据类型更改为 str对于 transform以及自LabelEncoder中的类(class)以来将是str :

X_train[col]=le.transform(X_train[col].astype(str))
X_test[col]=le.transform(X_test[col].astype(str))

尝试重现类似的问题。如果数据帧的值为 intstr :

import pandas as pd
df = pd.DataFrame({'col1':["tokyo", 1 , "paris"]})
print(df)

结果:

    col1
0 tokyo
1 1
2 paris

现在,使用Labelenconder会给出类似的错误消息,即 TypeError: unorderable types: int() < str() :

from sklearn import preprocessing

le = preprocessing.LabelEncoder()
le.fit(df.col1.values)

全部转换为str适合或之前可能会解决问题:

from sklearn import preprocessing

le = preprocessing.LabelEncoder()
le.fit(df.col1.values.astype(str))
print(le.classes_)

结果:

['1' 'paris' 'tokyo']

如果您调用le.transform(df.col1) ,它会再次抛出类似的错误。

所以,它必须是 le.transform(df.col1.astype(str))相反。

关于python - 立即在所有列上运行 sklearn labelencoder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49968432/

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