sklearn: 使用CountVectorizer对象获取新字符串的特征向量

我通过执行以下代码创建了一个CountVectorizer对象。

count_vectorizer = CountVectorizer(binary='true')data = count_vectorizer.fit_transform(data)

现在我有一个新字符串,我想将这个字符串映射到从CountVectorizer获得的TDM矩阵中。所以我期望输入到TDM的字符串会得到一个对应的文档术语向量。

我尝试了,

count_vectorizer.transform([string]) 

结果出现了错误,AttributeError: transform not found。我添加了堆栈跟踪的一部分,由于堆栈跟踪很长,我只添加了相关的最后几行。

  File "/Users/ankit/Desktop/geny/APIServer/RUNTIME/src/controller/sentiment/Sentiment.py", line 29, in computeSentiment    vec = self.models[model_name]["vectorizer"].transform([string])  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/scipy/sparse/base.py", line 440, in __getattr__    raise AttributeError(attr + " not found")

请指教。

谢谢

@Ankit S


回答:

你展示的例子无法重现 – 这里的string变量是什么?然而,以下代码似乎运行得很完美:

from sklearn.feature_extraction.text import CountVectorizerdata = ["aa bb cc", "cc dd ee"]count_vectorizer = CountVectorizer(binary='true')data = count_vectorizer.fit_transform(data)# 检查你的词汇表是否完美构建print count_vectorizer.vocabulary_# 尝试几个带有新词的新字符串。新词应该被忽略newData = count_vectorizer.transform(["aa dd mm", "aa bb"])print newData# 你可以通过写print newData.toarray()来获取数组

enter image description here

嗯,count_vectorizer.transform()接受字符串列表 – 而不是单个字符串。如果转换拟合没有工作,它应该会引发“ValueError: Vocabulary wasn’t fitted or is empty!” 在这种类型的错误情况下,请粘贴整个回溯堆栈(异常堆栈)。没有人能看出AttributeError是从哪里来的 – 是你的代码还是sklearn中的某个内部错误。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注