小编use*_*903的帖子

如何存储TfidfVectorizer以供将来在scikit-learn中使用?

我有一个TfidfVectorizer矢量化文章集合,然后是特征选择.

vectroizer = TfidfVectorizer()
X_train = vectroizer.fit_transform(corpus)
selector = SelectKBest(chi2, k = 5000 )
X_train_sel = selector.fit_transform(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)

现在,我想存储它并在其他程序中使用它.我不想TfidfVectorizer()在训练数据集上重新运行和选择特征选择器.我怎么做?我知道如何使模型持久使用,joblib但我想知道这是否与使模型持久化相同.

python tf-idf python-3.x scikit-learn joblib

14
推荐指数
3
解决办法
9072
查看次数

scikit-learn的分类指标中的classification_report与f1_score

使用scikit-learn的评估指标评估二进制分类器的正确方法是什么?

给定y_test和y_pred作为黄金和预测标签,classification_report输出中的F1分数不应该与f1_score产生的分数相同吗?

这是我的方法:

print(classification_reprot(y_test, y_pred)
Run Code Online (Sandbox Code Playgroud)

给出下表:

         precision    recall  f1-score   support

      0       0.49      0.18      0.26       204
      1       0.83      0.96      0.89       877

avg / total       0.77      0.81      0.77      1081
Run Code Online (Sandbox Code Playgroud)

然而,

print(f1_score(y_test, y_pred) 
Run Code Online (Sandbox Code Playgroud)

得出F1分数= 0.89

现在,根据上述输出,该模型F1的性能得分= 0.89还是0.77?

machine-learning scikit-learn cross-validation

4
推荐指数
1
解决办法
1799
查看次数

libsvm中的Holdout与K折叠交叉验证

我正在使用libsvm进行分类任务.我有10倍交叉验证,其中F1得分为0.80.但是,当我将训练数据集分成两部分时(一部分用于训练,另一部分用于测试,我将其称为保持测试集),F1分数降至0.65.分割比例为.8至.2.

那么,我的问题是,在进行k折交叉验证与保持测试之间是否有任何显着差异?这两种技术中的哪一种会产生一种概括良好的模型?在这两种情况下,我的数据集都会缩放.

machine-learning libsvm cross-validation

1
推荐指数
1
解决办法
2520
查看次数