首页 > 解决方案 > 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)

`

堆栈跟踪 数据帧头

标签: scikit-learnnlpcountvectorizer

解决方案


您需要像这样定义它:

steps = [('vectorizer',HashingVectorizer(tokenizer=TOKENS_ALPHANUMERIC,
                                         norm=None, binary=False, 
                                         lowercase=False,
                                         ngram_range=(1,2))),
         ('clf',OneVsRestClassifier(LogisticRegression()))]

当您不指定时key,该值将用于 HashingVectorizer 中的第一个参数,input因此它是错误的。


推荐阅读