TypeError:预期的字符串或类似字节的对象 HashingVectorizer
Posted
技术标签:
【中文标题】TypeError:预期的字符串或类似字节的对象 HashingVectorizer【英文标题】:TypeError: expected string or bytes-like object HashingVectorizer 【发布时间】:2018-10-17 11:25:09 【问题描述】:我在拟合数据集时一直面临这个问题。一切似乎都很好,不知道问题出在哪里。 由于我是初学者,谁能告诉我我做错了什么或者我错过了什么?
问题似乎出在数据预处理部分
错误跟踪和数据帧的头部已附加如下图所示 `
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)
`
stack tracedataframe head
【问题讨论】:
只需检查您提供给散列矢量化器的数据集是否具有 NULL 值,即您的 X_train 。如果它已经删除它。我认为您的问题会解决 【参考方案1】:你需要这样定义它:
steps = [('vectorizer',HashingVectorizer(tokenizer=TOKENS_ALPHANUMERIC,
norm=None, binary=False,
lowercase=False,
ngram_range=(1,2))),
('clf',OneVsRestClassifier(LogisticRegression()))]
当您不指定 key
时,该值将用于 HashingVectorizer 中的第一个参数 input
,因此会出错。
【讨论】:
以上是关于TypeError:预期的字符串或类似字节的对象 HashingVectorizer的主要内容,如果未能解决你的问题,请参考以下文章
Django DateField TypeError 预期的字符串或类似字节的对象
在抓取网站时,'TypeError:预期的字符串或类似字节的对象'
TypeError: Django中日期范围的预期字符串或类似字节的对象错误。
TypeError:使用RegEx过滤嵌套字符串列表时的预期字符串或类字节对象