SVM 分类器模型上的 StandardScaler 问题

Posted

技术标签:

【中文标题】SVM 分类器模型上的 StandardScaler 问题【英文标题】:Problem with StandardScaler on SVM classifier model 【发布时间】:2021-08-14 04:33:09 【问题描述】:

我使用支持向量机作为金融市场数据的分类器

我有一个包含 1500 条数据记录的数据库

然后我进行预处理和划分以及训练和测试

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 42, stratify = y)

scaler = StandardScaler()

X_train = scaler.fit_transform(X_train)

X_test = scaler.transform(X_test)

但为了保持良好的控制,我用泡菜保存了训练文件

然后我用新数据(大约 150 个)将文件上传到另一个数据库

我还对新数据执行标准缩放器

当我运行模型并执行准确性测试时,我得到了 60%,例如

我的问题是当我增加这个新数据库时,从 150 增加到 151、152、153 等等

当增加新数据时,我注意到模型失去了准确性,甚至以前的分类也不同,当我将它分类为 1 时,它是 0,或者相反

我怀疑对于新数据,缩放数据的维度会变得不同

我希望在插入新数据时,以前的数据没有新的评分 0 和 1,因此会降低我的初始准确性

谁能帮忙解决这个问题?

【问题讨论】:

请花一点时间看看如何正确格式化您的代码 sn-ps(不是为斜体文本)。 【参考方案1】:

由于信息不足,我们自然只能推测。问题是,我从它的预测发生变化的事实中推断出,你不是简单地用当前的缩放器转换新数据,而是你正在拟合然后转换数据。因此,长话短说,您需要将缩放器导出为泡菜,然后在处理新数据时加载它并简单地转换(不合适!)这些 [150, 151, ...] 实例。

【讨论】:

以上是关于SVM 分类器模型上的 StandardScaler 问题的主要内容,如果未能解决你的问题,请参考以下文章

支持向量机(SVM:support vector machine)

SVM支持向量分类器原理及OpenCV实现

支持向量机SVM及python实现

支持向量机(SVM)之数学公式详细推导

CS231N课程作业Assignment1--SVM

11支持向量机SVM:线性可分支持向量机