如何解决在同时包含文本和数字的多个列中应用 Sklearn 中的 LabelEncoder
我正在尝试将 Sklearn (0.24.1) Labelencoder 应用于一个数据集,其中一些列的文本和数字混合在一起。
dataset.csv
filename1,cat,dog,elephant,hamster,1,7,8,4,10
filename2,lizard,5,3,19,1
filename3,raccoon,10,11,14,15,16,23
filename4,turtle,bird,fish,6,2,11
filename5,donkey,3
我正在尝试将所有动物名称转换为数值。下面是我尝试使用的代码。
input_file = "dataset.csv"
df = pd.read_csv(input_file,header = 0)
numDF = OneHotEncoder().fit_transform(df)
但是当我运行这个时,我得到了错误:
TypeError: Encoders require their input to be uniformly strings or numbers. Got ['float','str']
解决方法
你可以看看这个关于ColumnTransformer
的{{3}}。
简而言之,您将使用以下内容:
from sklearn.compose import ColumnTransformer
preprocessor = ColumnTransformer(
transformers=[('categorical',OneHotEncoder(),['filename','animal'])],remainder='passthrough',)
numerical_df = preprocessor.fit_transform(df)
但是,只有在数据框中具有标题为“文件名”和“动物”的固定列时,这才有效。您似乎每行都有可变数量的带有动物的列,这将需要一些自定义预处理,不太适合 scikit-learn。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。