gpt4 book ai didi

machine-learning - SVM 加载的训练模型的准确度明显较低;我们还需要保存 TokenCountVectorizer 吗?

转载 作者:行者123 更新时间:2023-11-30 08:58:14 25 4
gpt4 key购买 nike

在 Liblinear 或 Libsvm 上,我加载数据,将其分为训练和测试,这给了我 95% 的准确率。此时,我保存模型和标签以供以后重用。

现在的问题是,当我将保存的数据加载到模型中,并测试预测方法时即使使用训练时使用的相同数据,准确度也会下降至 53%!

用于构建模型的代码:

$vectorizer = new TokenCountVectorizer(new WhitespaceTokenizer());
$tfIdfTransformer = new TfIdfTransformer();

$vectorizer->fit($samples);
$vectorizer->transform($samples);

$tfIdfTransformer->fit($samples);
$tfIdfTransformer->transform($samples);

$dataset = new ArrayDataset($samples, $labels);
$randomSplit = new StratifiedRandomSplit($dataset, 0.1);

$classifier = new SVC(
Kernel::LINEAR, // $kernel
8.0, // $cost
3, // $degree
null, // $gamma
0.0, // $coef0
0.001, // $tolerance
100, // $cacheSize
true, // $shrinking
true // $probabilityEstimates, set to true
);

$classifier->train($randomSplit->getTrainSamples(), $randomSplit->getTrainLabels());

$classifier->save($modelFile); // save the model and lables (everything in the classifier)

$predictedLabels = $classifier->predict($randomSplit->getTestSamples());
echo 'Accuracy: '.Accuracy::score($randomSplit->getTestLabels(), $predictedLabels); // this gives 0.95

用于预测新数据的代码:

$classifier = new SVC();
$classifier->load($modelFile);

$vectorizer = new TokenCountVectorizer(new WhitespaceTokenizer());
$tfIdfTransformer = new TfIdfTransformer();

$vectorizer->fit($samples);
$vectorizer->transform($samples);

$tfIdfTransformer->fit($samples);
$tfIdfTransformer->transform($samples);

$dataset = new ArrayDataset($samples, $labels);

$predictedLabels = $classifier->predict($samples);
echo 'Accuracy: '.Accuracy::score($labels, $predictedLabels); // this gives 0.53

注意:两种情况下的 $samples 和 $labels 是相同的 - 仅在测试中它们是 100 个实例,而在训练中它们是 400 个实例。

<小时/>

我看到的唯一区别是,在训练期间,我在训练数据和测试数据上使用了相同的矢量化器和变压器,而在测试期间我使用了新的矢量化器和变压器。

那么,我是否还应该以某种方式保存矢量化器和变压器并稍后重新加载它们?

最佳答案

是的。

用于测试或生产的数据必须以与初始训练中相同的方式进行转换。

因此,您需要使用相同的特征、相同的缩放机制和相同的转换过程来获得更好的预测结果。

关于machine-learning - SVM 加载的训练模型的准确度明显较低;我们还需要保存 TokenCountVectorizer 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51059634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com