Zve*_*Art 2 python python-3.x scikit-learn
我正在使用scikit-learn进行文本处理,但我CountVectorizer没有提供我期望的输出.
我的CSV文件如下:
"Text";"label"
"Here is sentence 1";"label1"
"I am sentence two";"label2"
Run Code Online (Sandbox Code Playgroud)
等等.
所以我想首先使用Bag of Words来理解python中的SVM是如何工作的.
import pandas as pd
from sklearn import svm
from sklearn.feature_extraction.text import CountVectorizer
data = pd.read_csv(open('myfile.csv'),sep=';')
target = data["label"]
del data["label"]
# Creating Bag of Words
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(data)
X_train_counts.shape
count_vect.vocabulary_.get(u'algorithm')
Run Code Online (Sandbox Code Playgroud)
而当我这样做
print(X_train_counts.shape)
Run Code Online (Sandbox Code Playgroud)
我看到输出(1,1),而我有1048行句子.比我看看输出的
count_vect.vocabulary_.get(u'algorithm')
Run Code Online (Sandbox Code Playgroud)
这是None.
你能告诉我,我做错了吗?我正在学习本教程.
Ary*_*thy 11
问题在于count_vect.fit_transform(data).该函数需要一个产生字符串的iterable.不幸的是,这些是错误的字符串,可以用一个简单的例子来验证.
for x in data:
print(x)
# Text
Run Code Online (Sandbox Code Playgroud)
只打印列名称; iterating给出列而不是值data['Text'].你应该做这个:
X_train_counts = count_vect.fit_transform(data.Text)
X_train_counts.shape
# (2, 5)
count_vect.vocabulary_
# {'am': 0, 'here': 1, 'is': 2, 'sentence': 3, 'two': 4}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10806 次 |
| 最近记录: |