如何根据虚拟变量转换新数据集以进行验证
How To convert New Data set according to dummy variables for validation
我正在使用逻辑回归模型来预测二元结果。
最初,该模型有 2 个数字变量,这些变量被转换为分类变量。最后根据类别创建虚拟变量。这是示例(如果含糊不清,我深表歉意,我是这个领域的新手)
原始 df:
Air_Humidity Air_Temperature
0 61.0 14.10
1 61.0 14.21
2 60.0 14.08
3 60.0 14.08
4 62.0 14.06
5 65.0 18.36
6 67.0 18.58
7 65.0 18.52
8 66.0 18.54
9 64.0 18.60
使用 qcut 进行分类转换(3 个湿度箱,2 个温度箱)
Air_Humidity Air_Temperature
0 2 1
1 2 1
2 2 1
3 2 1
4 2 1
5 3 2
6 3 2
7 3 2
8 3 2
9 2 2
虚拟变量 df:
Air_Humidity_1 Air_Humidity_2 Air_Humidity_3 Air_Temperature_1 Air_Temperature_2
0 1 0 1 0
0 1 0 1 0
0 1 0 1 0
0 1 0 1 0
0 1 0 1 0
0 0 1 0 1
0 0 1 0 1
0 0 1 0 1
0 0 1 0 1
0 1 0 0 1
我的问题是:如果我有新的数据样本。如何将其直接转换为虚拟变量数据框。?我可以使用它来使用新数据样本测试模型。
一列示例 (Air_Humidity
):
air_humidity_binned, air_humidity_bins = pd.qcut(df_train['Air_Humidity'], 3, retbins = True)
通过设置 retbins = True
,您不仅返回分箱变量,还返回分箱的边界,稍后您可以使用它对测试集进行分箱。
调整以防测试集上的值超出训练集的范围:
air_humidity_bins = np.concatenate(([-np.inf], air_humidity_bins[1:-1], [np.inf]))
然后在测试集上获取分箱变量:
air_humidity_binned_test = pd.qcut(df_test['Air_Humidity'], air_humidity_bins)
要获得更精简的方法,您可以尝试 sklearn 的 KBinsDiscretizer
(使用 strategy='quantile'
),它遵循通常的拟合变换模式。
我正在使用逻辑回归模型来预测二元结果。 最初,该模型有 2 个数字变量,这些变量被转换为分类变量。最后根据类别创建虚拟变量。这是示例(如果含糊不清,我深表歉意,我是这个领域的新手)
原始 df:
Air_Humidity Air_Temperature
0 61.0 14.10
1 61.0 14.21
2 60.0 14.08
3 60.0 14.08
4 62.0 14.06
5 65.0 18.36
6 67.0 18.58
7 65.0 18.52
8 66.0 18.54
9 64.0 18.60
使用 qcut 进行分类转换(3 个湿度箱,2 个温度箱)
Air_Humidity Air_Temperature
0 2 1
1 2 1
2 2 1
3 2 1
4 2 1
5 3 2
6 3 2
7 3 2
8 3 2
9 2 2
虚拟变量 df:
Air_Humidity_1 Air_Humidity_2 Air_Humidity_3 Air_Temperature_1 Air_Temperature_2
0 1 0 1 0
0 1 0 1 0
0 1 0 1 0
0 1 0 1 0
0 1 0 1 0
0 0 1 0 1
0 0 1 0 1
0 0 1 0 1
0 0 1 0 1
0 1 0 0 1
我的问题是:如果我有新的数据样本。如何将其直接转换为虚拟变量数据框。?我可以使用它来使用新数据样本测试模型。
一列示例 (Air_Humidity
):
air_humidity_binned, air_humidity_bins = pd.qcut(df_train['Air_Humidity'], 3, retbins = True)
通过设置 retbins = True
,您不仅返回分箱变量,还返回分箱的边界,稍后您可以使用它对测试集进行分箱。
调整以防测试集上的值超出训练集的范围:
air_humidity_bins = np.concatenate(([-np.inf], air_humidity_bins[1:-1], [np.inf]))
然后在测试集上获取分箱变量:
air_humidity_binned_test = pd.qcut(df_test['Air_Humidity'], air_humidity_bins)
要获得更精简的方法,您可以尝试 sklearn 的 KBinsDiscretizer
(使用 strategy='quantile'
),它遵循通常的拟合变换模式。