【发布时间】:2019-06-08 03:42:39
【问题描述】:
我有一个电影评论数据集。它有两列:'class' 和 'reviews'。我已经完成了大部分常规的预处理工作,例如:降低字符、删除停用词、删除标点符号。在预处理结束时,每个原始评论看起来就像用空格分隔符分隔的单词。
我想使用 CountVectorizer,然后使用 TF-IDF 来创建我的数据集的特征,这样我就可以使用随机森林进行分类/文本识别。我查看了网站,并尝试按照他们的方式进行操作。这是我的代码:
data = pd.read_csv('updated-data ready.csv')
X = data.drop('class', axis = 1)
y = data['class']
vectorizer = CountVectorizer()
new_X = vectorizer.fit_transform(X)
tfidfconverter = TfidfTransformer()
X1 = tfidfconverter.fit_transform(new_X)
print(X1)
但是,我得到了这个输出......
(0, 0) 1.0
这根本没有意义。我处理了一些参数并注释掉了关于 TF-IDF 的部分。这是我的代码:
data = pd.read_csv('updated-data ready.csv')
X = data.drop('class', axis = 1)
y = data['class']
vectorizer = CountVectorizer(analyzer = 'char_wb', \
tokenizer = None, \
preprocessor = None, \
stop_words = None, \
max_features = 5000)
new_X = vectorizer.fit_transform(X)
print(new_X)
这是我的输出:
(0, 4) 1
(0, 6) 1
(0, 2) 1
(0, 5) 1
(0, 1) 2
(0, 3) 1
(0, 0) 2
我错过了什么吗?还是我太菜鸟无法理解?我所理解和想要的只是/如果我进行转换,我将收到一个具有如此多特征(关于单词及其频率)加上标签列的新数据集。但是,我得到的远非如此。
我再说一遍,我只想从我的数据集中获得一个新的数据集,其中包含带有数字、单词作为特征的评论,因此随机森林或其他分类算法可以用它做任何事情。
谢谢。
顺便说一句,这是我数据集的前五行:
class reviews
0 1 da vinci code book awesome
1 1 first clive cussler ever read even books like ...
2 1 liked da vinci code lot
3 1 liked da vinci code lot
4 1 liked da vinci code ultimatly seem hold
【问题讨论】:
-
顺便说一句,你可以使用
TfidfVectorizer,它结合了CountVectorizer和TfidfTransformer。 -
@Tomothy32 我知道。文章提到了。
-
你所说的“没有意义的奇怪输出”是一个稀疏矩阵。您可以从这里开始,将其设置为稠密,或使用
as it is作为 RandomForest 分类器的输入。 -
@SergeyBushmanov 但是,然后我看到这个错误:“找到样本数量不一致的输入变量:[1, 7086]”...
-
[1,7086] 绝对不是您希望看到的此类问题/数据集。有关分步工作流程,请参阅下面的答案。
标签: python scikit-learn classification sentiment-analysis text-recognition