程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了sklearn Count vectorizer - 如何在以后保存、加载和用于转换单个文本大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决sklearn Count vectorizer - 如何在以后保存、加载和用于转换单个文本?

开发过程中遇到sklearn Count vectorizer - 如何在以后保存、加载和用于转换单个文本的问题如何解决?下面主要结合日常开发的经验,给出你关于sklearn Count vectorizer - 如何在以后保存、加载和用于转换单个文本的解决方法建议,希望对你解决sklearn Count vectorizer - 如何在以后保存、加载和用于转换单个文本有所启发或帮助;

像往常一样,我正在努力将基本原理概念化。我已经在数据集上训练和测试了许多 1v1 估计器。训练数据是每个估计器的句子中所有单词的 count_vectorizer 和 tfIDf 分数总和的组合(每个估计器用于不同的分类器,每个分类器都有一个专用的词典)。 因此,count_vectorizer 值保持不变,并将其连接到与每个估计器的给定类相关的分数数组。

下面是一个玩具示例:

cv = CountVectorizer(min_df=2,ngram_range=(1,3),stop_words=stopwords)
count_vector = cv.fit_transform(serIEs_of_Train_texts.toList())
test_vector = cv.transform(serIEs_of_test_texts.toList())

df_Train_scores = List(zip(df_Train['score_1'],df_Train['score_2'],df_Train['score_3']
                     ))

Training_array = np.array(df_Train_List)
test_array = np.array(df_test_List)

X_Train = np.hstack([count_vector.todense(),Training_array])
X_test = np.hstack([test_vector.todense(),test_array])

svm_var = linearSVC(tol=1e-5,max_iter=1500)


for class in groups:
    svm_var.fit(X_Train,df_Train[class].toList())
    preDictions= List(svm_var.preDict(X_test))  

我有两个问题:

  1. 如何引入一个测试句子,它需要在进行预测之前首先通过计数向量化器进行转换并与各种 tfIDf 分数连接?
  • 如果我 cv.transform([single_sentence]) 并连接一组分数(1 次发送所以一维数组),我会得到形状不匹配 - 我可以强制重新形状,但我不知道为什么我' d 选择一个特定的形状,或者为什么我一开始就不必这样做。 count_vectorizer 文档矩阵的形状为 (1,3455) 分数数组,形状为 (3,)。
  1. 如何导出它以使其可重复使用
  • 我要在 fit_transform 之后导出 count_vectorizer 吗? - 如果是这样,我如何导入它才能转换一个新句子? (在上面的代码中导出 count_vector 后 - joblib.dump 并再次加载,我不能立即使用转换 - 我是否需要 cv 和 count_vector - 它需要是那个特定的还是我实例化一个新的 cv?)
  • 这是我导出的一个估算器吗?我不这么认为,因为它是在 for 循环中按类重新训练的 - 所以我必须再次这样做还是将每个估算器保存在循环中?

我通常解决这个问题的方法是 1) 阅读文档; 2)谷歌搜索; 3)尝试我能想到的一切。当我达到 3 级时,这是一个痛苦而漫长的过程,我尝试将我认为可行的所有可能的组合都进行了尝试,但不知道我应该如何思问题。

谁能帮我理解一下?

解决方法

持久化和重用列车模型的最简单方法是将其保存为一个对象。 scikit-learn 中的 Pipeline 允许您将预处理步骤和模型组合到对象中。创建管道后,您可以将它与您的训练集一起 fit(),然后使用 joblib 保存它,如本玩具示例所示:

import joblib

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.svm import LinearSVC 
from sklearn.pipeline import Pipeline
import pandas as pd


df = pd.DataFrame({
    'A': ['abcde','abcde','xyz','xyz'],'B': [0,1,1]}
)

X = df['A']
y = df['B']

model = Pipeline([('countVectorizer',CountVectorizer()),('svc',LinearSVC())])

model.fit(X,y)

joblib.dump(model,'model.joblib')

model2 = joblib.load('model.joblib')
model2.preDict(['abde'])

大佬总结

以上是大佬教程为你收集整理的sklearn Count vectorizer - 如何在以后保存、加载和用于转换单个文本全部内容,希望文章能够帮你解决sklearn Count vectorizer - 如何在以后保存、加载和用于转换单个文本所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。