python - 如何修复“ValueError:提供的数据在使用特征大小 17721 进行训练时具有 1 个维度”使用 sklearn LDA 模型进行预测
问题描述
我在大数据集(由 16k 篇不同的文章组成)上训练了 LDA 模型,并用 pickle 保存了模型,以便以后使用。当我尝试在其他数据上使用它时(选择了 1 篇文章并想查看将分配什么主题),我收到错误“ValueError:提供的数据有 1 个维度,而模型是用特征大小 17721 训练的。”
这是我用于训练模型并保存它的代码。
prepared_data = []
prepared_string = ""
for article_text in all_article_text:
paragraph = article_text.get('text')
paragraph is not None and len(paragraph) > 20:
split_words = paragraph.split()
table = str.maketrans('','', string.punctuation)
stripped = [w.translate(table) for w in split_words]
lower_words = [word.lower() for word in stripped]
words_with_stops_words = [word for word in lower_words if word.isalpha()]
words = [w1 for w1 in words_with_stops_words if not w1 in stop_words]
stemmed_words = [PorterStemmer().stem(word) for word in words]
for i in stemmed_words:
if len(i) > 2:
prepared_data.append(i)
prepared_string += i + " "
# all_documents.append(prepared_data)
if len(prepared_string) > 20:
all_documents.append(prepared_string)
vectorizer = CountVectorizer(analyzer='word',
min_df=1
)
data_vectorized = vectorizer.fit_transform(all_documents)
model = LatentDirichletAllocation(n_topics=10, # Number of topics
max_iter=3000, # Max learning iterations
learning_method='online',
random_state=100, # Random state
batch_size=128, # n docs in each learning iter
evaluate_every = -1, # compute perplexity every n iters, default: Don't
learning_decay= .5
)
model.fit(data_vectorized)
lda_output = model.transform(data_vectorized)
filename = 'LDA_model3000_iter.sav'
pickle.dump(model, open(filename, 'wb'))
## Loading model
file_name = 'LDA_model3000_iter.sav'
loaded_model = pickle.load(open(file_name,'rb'))
vectorizer = CountVectorizer(analyzer='word',
min_df=1,
vocabulary=all_documents
)
vectorizer._validate_vocabulary()
new_vect = vectorizer.transform(all_documents)
loaded_model.transform(new_vect)
但我得到的是“ValueError:提供的数据有 1 个维度,而模型是用特征大小 17721 训练的。”
解决方案
推荐阅读
- c# - C# Hello world 失败
- python - 确定两个列表中的元素是否相同的有效方法
- python - Pd Groupby 不会对 pd 中的列进行分组
- java - 如何在 Eclipse 中激活 LFS 支持按钮?
- python - 将浮点列表转换为类似字节的对象会导致图像损坏
- python - 如何将二进制数的相应整数值打印到其位置?(在蟒蛇中)
- python - django.core.exceptions.fielderror:无法将关键字“flight”解析为字段。选择是:first、flights、id、last
- python - 使用 PRAW 获取旧的 reddit 提交
- c# - 绑定到自定义对象列表并在 Xamarin 中显示
- php - 当一天是周末 PHP 时停止倒计时