我正在用scikit学习两个标签的文本分类..我用load_files方法加载我的文本文件
categories={'label0','label1'}
text_data = load_files(path,categories=categories)
来自以下结构:
train
├── Label0
│ ├── 0001.txt
│ └── 0002.txt
└── Label1
├── 0001.txt
└── 0002.txt
我的问题是,当我尝试查看text_data.data的形状时,它会返回:
print (type(text_data.data))
<type 'list'>
print text_data.data.shape
AttributeError: 'list' object has no attribute 'shape'
X = np.array(text_data.data)
print x.shape
(35,)
它返回1D数组..我认为它应该是2D numpy数组或字典,其中第一个将用于文本而另一个将用于类(label0或1).. 我错过了什么吗?
答案 0 :(得分:1)
问题是在调用load_files之后,它还不是一个numpy数组。它只是一个文本列表。您应该使用CountVectorizer
或TfidfVectorizer
来对文本进行矢量化。
示例:强>
cv = CountVectorizer()
X = cv.fit_transform(text_data.data)
y = text_data.target
print cv.vocabulary_ # Show words in vocabulary with column index
clf = LogisticRegression() # or other classifier
clf.fit(X, y)