【问题标题】:Scaling test data to 0 and 1 using MinMaxScaler使用 MinMaxScaler 将测试数据缩放为 0 和 1
【发布时间】:2015-08-09 00:22:58
【问题描述】:

使用 sklearn 的 MinMaxScaler,我按如下方式缩放我的数据。

min_max_scaler = preprocessing.MinMaxScaler()
X_train_scaled = min_max_scaler.fit_transform(features_train)
X_test_scaled = min_max_scaler.transform(features_test)

但是,当打印 X_test_scaled.min() 时,我有一些负值(这些值不在 0 和 1 之间)。这是因为我的测试数据中的最小值低于训练数据,其中 min max scaler 是合适的。

在 0 和 1 值之间没有完全标准化的数据对 SVM 分类器有多大影响?另外,将训练数据和测试数据连接到一个矩阵中,执行 min-max 缩放以确保值在 0 和 1 之间,然后再次分离它们是不是不好的做法?

【问题讨论】:

    标签: python machine-learning scikit-learn svm


    【解决方案1】:

    如果您可以一次性缩放所有数据,这会更好,因为您的所有数据都由 Scaler 以一种合乎逻辑的方式管理(都在 0 和 1 之间)。但是对于 SVM 算法,一定没有区别,因为 scaler 会扩展 scale。即使是负数,也有相同的差异。

    In the documentation我们可以看到有负值所以我认为它对结果没有影响

    【讨论】:

      【解决方案2】:

      对于这种缩放,它在实践中可能并不重要,但一般来说,您不应该使用测试数据来估计预处理的任何参数。对于更复杂的预处理步骤,这可能会严重影响您的结果。

      您真的没有理由要在这里连接数据,SVM 会处理它。 如果您将使用需要正值的模型并且您的测试数据未得到正值,则您可以考虑使用 MinMaxScaler 以外的其他策略。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-04
        • 2019-10-04
        • 1970-01-01
        • 2018-11-29
        • 2021-08-30
        • 2018-11-07
        • 1970-01-01
        • 2023-01-17
        相关资源
        最近更新 更多