OneHotEncoder仅对单一字符串特征进行编码

我希望将我的一个特征转换为独立的二进制特征:

df["pattern_id"]Out[202]: 0       31       3...7440    27441    27442    3Name: pattern_id, Length: 7443, dtype: int64 df["pattern_id"]Out[202]: 0       0 0 11       0 0 1...7440    0 1 07441    0 1 07442    0 0 1Name: pattern_id, Length: 7443, dtype: int64 

我想使用OneHotEncoder,数据是整数,因此不需要进行编码:

onehotencoder = OneHotEncoder(categorical_features=["pattern_id"])df = onehotencoder.fit_transform(df).toarray()ValueError: could not convert string to float: 'http://www.zaragoza.es/sedeelectronica/'

有趣的是,我收到了一个错误… sklearn尝试编码另一列,而不是我想要的那一列。

我们需要将pattern_id编码为整数值

我使用了这个链接: 使用OneHotEncoder对分类特征进行编码的问题

#将pattern_id特征转换为整数encoding_feature = ["pattern_id"]enc = LabelEncoder()enc.fit(encoding_feature)working_feature = enc.transform(encoding_feature)working_feature = working_feature.reshape(-1, 1)ohe = OneHotEncoder(sparse=False)#将pattern_id特征转换为独立的二进制特征onehotencoder = OneHotEncoder(categorical_features=working_feature, sparse=False)df = onehotencoder.fit_transform(df).toarray()

我得到了同样的错误。我做错了什么?

编辑

来源:https://github.com/martin-varbanov96/scraper/blob/master/logo_scrape/logo_scrape/analysis.py

dfOut[259]:       found_img  is_http                                           link_img  \0          True        0                                  img/aahoteles.svg   //www.zaragoza.es/cont/paginas/img/sede/logo_e...         pattern_id                                       current_link  site_id  \0              3             https://www.aa-hoteles.com/es/reservas        3   6              3      https://www.aa-hoteles.com/es/ofertas-hoteles        3   7              2           http://about.pressreader.com/contact-us/        4   8              3           http://about.pressreader.com/contact-us/        4         status                                   link_id  0        200               https://www.aa-hoteles.com/  1        200               https://www.365travel.asia/  2        200               https://www.365travel.asia/  3        200               https://www.365travel.asia/  4        200               https://www.aa-hoteles.com/  5        200               https://www.aa-hoteles.com/  6        200               https://www.aa-hoteles.com/  7        200              http://about.pressreader.com  8        200              http://about.pressreader.com  9        200               https://www.365travel.asia/  10       200               https://www.365travel.asia/  11       200               https://www.365travel.asia/  12       200               https://www.365travel.asia/  13       200               https://www.365travel.asia/  14       200               https://www.365travel.asia/  15       200               https://www.365travel.asia/  16       200               https://www.365travel.asia/  17       200               https://www.365travel.asia/  18       200              http://about.pressreade [7443 rows x 8 columns]

回答:

如果你查看OneHotEncoder的文档,你会发现categorical_features参数期望的是’“all”或索引数组或掩码’,不是字符串。你可以通过更改以下几行来使你的代码工作:

import pandas as pdfrom sklearn.preprocessing import OneHotEncoder# 创建一个随机整数的DataFramedf = pd.DataFrame(np.random.randint(0, 4, size=(100, 4)),                  columns=['pattern_id', 'B', 'C', 'D'])onehotencoder = OneHotEncoder(categorical_features=[df.columns.tolist().index('pattern_id')])df = onehotencoder.fit_transform(df)

然而,df将不再是一个DataFrame,我建议直接使用numpy数组进行操作。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注