首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TFIDF向量器出现错误

TFIDF向量器出现错误
EN

Stack Overflow用户
提问于 2015-01-23 14:09:16
回答 1查看 23.7K关注 0票数 4

我正在尝试使用TFIDF和SVM对某些文件进行文本分类。这些特征一次选择3个单词。我的数据文件已经是这样的格式: angel eyes,每个文件都有自己的格式。没有停止的单词,也不能做词干或词干。我希望功能被选择为:天使的眼睛有…我写的代码如下:

代码语言:javascript
复制
import os
import sys
import numpy
from sklearn.svm import LinearSVC
from sklearn.metrics import confusion_matrix
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn import metrics
from sklearn.datasets import load_files
from sklearn.cross_validation import train_test_split

dt=load_files('C:/test4',load_content=True)
d= len(dt)
print dt.target_names
X, y = dt.data, dt.target
print y
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
print y_train
vectorizer = CountVectorizer()
z= vectorizer.fit_transform(X_train)
tfidf_vect= TfidfVectorizer(lowercase= True, tokenizer=',', max_df=1.0, min_df=1, max_features=None, norm=u'l2', use_idf=True, smooth_idf=True, sublinear_tf=False)


X_train_tfidf = tfidf_vect.fit_transform(z)

print tfidf_vect.get_feature_names()
svm_classifier = LinearSVC().fit(X_train_tfidf, y_train)

不幸的是,我在“X_train_tfidf = tfidf_vect.fit_transform(z)”:AttributeError: lower not found得到了一个错误。

如果我修改代码来做

代码语言:javascript
复制
tfidf_vect= TfidfVectorizer( tokenizer=',', use_idf=True, smooth_idf=True, sublinear_tf=False)
print "okay2"
#X_train_tfidf = tfidf_transformer.fit_transform(z)
X_train_tfidf = tfidf_vect.fit_transform(X_train)
print X_train_tfidf.getfeature_names()

我收到错误: TypeError:'str‘对象不可调用可以请某人告诉我哪里出错了吗

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-23 14:46:23

标记器参数的输入是一个可调用的。尝试定义一个函数来适当地标记化您的数据。如果它是逗号分隔的,则:

代码语言:javascript
复制
def tokens(x):
return x.split(',')

应该行得通。

代码语言:javascript
复制
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vect= TfidfVectorizer( tokenizer=tokens ,use_idf=True, smooth_idf=True, sublinear_tf=False)

创建由,分隔的随机字符串

代码语言:javascript
复制
 a=['cat on the,angel eyes has,blue red angel,one two blue,blue whales eat,hot tin roof']

tfidf_vect.fit_transform(a)
tfidf_vect.get_feature_names()

返回

代码语言:javascript
复制
Out[73]:

[u'angel eyes has',
 u'blue red angel',
 u'blue whales eat',
 u'cat on the',
 u'hot tin roof',
 u'one two blue']
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28103992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档