当我尝试将scikit-learn的StandardScaler放入我的pandas数据框时,我得到以下错误:
TypeError:只有当所有输入功能都有字符串名称时才支持功能名称,但您的输入具有['str','str_']作为功能名称/列名称类型。如果您希望存储和验证功能名称,则必须将它们全部转换为字符串,例如使用X.columns = X. columnes.astype(str)。否则,可以从输入数据中删除要素/列名,或将它们全部转换为非字符串数据类型。
此错误发生在代码的这一部分:
scaler.fit(data[map_keys])
字符串
这里data是一个dataframe,map_keys
是一个只包含字符串值的列表。以下是数据的一个示例:>> data[map_keys].head()
输出:
loss revenue visit_number ...
1964 1.0 0.0 1.0 ...
1402 2.0 0.0 1.0 ...
2539 2.0 0.0 1.0 ...
86 2.0 0.0 1.0 ...
808 2.0 0.0 2.0 ...
型
为了解决这个问题,我所做的是将map_keys
中的所有元素转换为str
类型:
map_keys = [str(k) for k in map_keys]
型
因为当我第一次遇到这个问题时,列表中的一些元素的类型是np.str_
。但错误仍然存在……请注意,我在这段代码中使用的scikit-learn版本是1.2.1
。
1条答案
按热度按时间5m1hhzi41#
我使用错误消息中包含的一行代码重命名了列:
字符串
而且成功了