You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sklearn FeatureHasher处理DataFrame单列报错问题求助

解决FeatureHasher处理单列字符串时的ValueError问题

错误原因

当input_type='string'时,FeatureHasher要求输入是可迭代的可迭代对象——也就是说每个样本得是一个包含字符串的迭代器(比如单元素列表)。而你直接传入的X_train["Item_Identifier"]是Pandas Series,每个元素是单个字符串,不符合输入要求,所以触发了错误。

修复方案

只需要把每个字符串包装成单元素列表,让输入符合FeatureHasher的要求即可,有两种简单写法:

写法1:用Pandas的apply处理Series

from sklearn.feature_extraction import FeatureHasher
import pandas as pd

hash_vector_size = 50
fh = FeatureHasher(n_features=hash_vector_size, input_type='string')
# 将每个字符串转为单元素列表
processed_input = X_train["Item_Identifier"].apply(lambda x: [x])
hashed_features = fh.transform(processed_input).toarray()
hashed_df = pd.DataFrame(hashed_features, columns=['H'+str(i) for i in range(hash_vector_size)])

写法2:生成列表推导式

from sklearn.feature_extraction import FeatureHasher
import pandas as pd

hash_vector_size = 50
fh = FeatureHasher(n_features=hash_vector_size, input_type='string')
# 直接生成包含单元素列表的迭代器
processed_input = [[item] for item in X_train["Item_Identifier"]]
hashed_features = fh.transform(processed_input).toarray()
hashed_df = pd.DataFrame(hashed_features, columns=['H'+str(i) for i in range(hash_vector_size)])

这样处理后,就能得到你预期的50列哈希特征DataFrame了。

内容的提问来源于stack exchange,提问作者Dayo Salam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 01:50:58