当您想要预测数据时如何重新应用重新缩放

数据挖掘 预测建模 特征缩放
2022-02-07 16:00:42

我使用 Data Science Studio (Dataiku) 创建了一个决策树模型。然后我把pickle文件加载到Python中继续使用它。

import pickle

f = open('clf.pkl', 'rb')
loaded_model = pickle.load(f, encoding='latin1')

在模型设置上,我使用standard rescalingwhich 使用avgstd. Dataiku 还导出此json文件,其中包含有关重新缩放的详细信息:

{
    "shifts": [
        4.2708957215287455, 
        5.582300530732055, 
        4.721780769116731, 
        6.309030531691733, 
        4.534705132386515, 
        50183.866161634876, 
        4.628957297141036, 
        5.931597829632046, 
        1.834355009673187, 
        21814.135528393213, 
        0.9999925875959688, 
        0.23165941222883746, 
        -0.11146363232269413
    ], 
    "columns": [
        "col1", 
        "col2", 
        "col3", 
        "col4", 
        "col5", 
        "col6", 
        "col7", 
        "col8", 
        "col9", 
        "col10", 
        "col11", 
        "col12", 
        "col13"
    ], 
    "inv_scales": [
        0.29041217789420476, 
        0.32026605114154144, 
        0.3398879256267485, 
        0.2539738260220278, 
        0.27817344479641604, 
        1.1217850173179438e-05, 
        0.3181917203503525, 
        0.2886476076886483, 
        0.37842451508835384, 
        2.329233011164756e-05, 
        0.21830904186227362, 
        2.003574563132119, 
        1.386943696546877
    ]
}

假设我有一个带有原始值的新输入(在重新缩放之前)。如何使用上述信息重新调整新对象上的所有特征,我必须预测结果?

3个回答

添加到 jrouquie 的答案中,公式为:

对于每一列,

rescaled_feature = (input_feature - shift)  * inv_scale

请注意,该方法很脆弱,因为 DSS 不保证 pickle 中的数据格式。但只要你不升级它,你应该没问题。

您是否尝试过模型页面中的“导出到 python 笔记本”功能?这个是可读的,可以帮助你。

在神经网络中我们使用缩放(max-min)+min

a<-(最大值(sCvs)min(sCvs))+min(s$Cvs)