scikit-learn - TypeError:预期的字符串或类似字节的对象 HashingVectorizer
问题描述
我在拟合数据集时一直面临这个问题。一切似乎都很好,不知道问题出在哪里。由于我是初学者,任何人都可以告诉我我做错了什么或者我错过了什么吗?
问题似乎出在数据预处理部分
错误跟踪和数据帧的头部已附加如下图`
train = pd.read_csv('train.txt', sep='\t', dtype=str, header=None)
test = pd.read_csv('test.txt', sep='\t', dtype=str, header=None)
X_train = train.iloc[:,1:]
y_train = train.iloc[:,0:1]
X_test = test.iloc[:,1:]
y_test = test.iloc[:,0:1]
TOKENS_ALPHANUMERIC = '[A-Za-z0-9]+(?=\\s+)'
steps = [('vectorizer',HashingVectorizer(TOKENS_ALPHANUMERIC,
norm=None, binary=False, lowercase=False,
ngram_range=(1,2))),
('clf',OneVsRestClassifier(LogisticRegression()))]
pipeline = Pipeline(steps)
pipeline.fit(X_train,y_train)
accuracy = pipeline.score(X_test,y_test)
print(accuracy)
`
解决方案
您需要像这样定义它:
steps = [('vectorizer',HashingVectorizer(tokenizer=TOKENS_ALPHANUMERIC,
norm=None, binary=False,
lowercase=False,
ngram_range=(1,2))),
('clf',OneVsRestClassifier(LogisticRegression()))]
当您不指定时key
,该值将用于 HashingVectorizer 中的第一个参数,input
因此它是错误的。
推荐阅读
- pyomo - 用 pyomo 求解 MIQP - 设置为正值的变量在迭代期间变为零
- forms - 提交表单时无法登录cypress
- javascript - 如何在 html 中设置预选按钮的样式,以便选择的选项不显示在下拉列表中?
- linux - 在 Linux 中从 root 用户获取 Git 失败
- angular - 令牌预计有 3 个部分,但得到了 4 个
- javascript - Jasmine 如何通过依赖于闭包变量的任何顺序运行的规范
- docker - 如何从命令“docker start mysql -a”退出
- java - 休息服务 api 抛出 Http 代码 415 错误
- kotlin - 变量调用属性从何而来?
- python - 在 Odoo 13 的另一个模型中使用选择字段