【发布时间】:2020-07-10 04:55:54
【问题描述】:
我对转换和反向转换不同类型的数据有点困惑。我有一个带有数字和分类列的数据框。
- 获取数据框并将分类值转换为数值
- 获取新数据框并对其进行缩放。
- 在上面运行我的模型。
- 尝试将其转换回(未缩放 + 将数字分类数据转换回字符串)
问题是我得到了第 1-3 步的工作,但我不确定如何将分类数据转换回来。我可以转换数据框,使其不再缩放(反转步骤 2),但不确定如何重新添加列名。
这是一个例子,原始数据:
totalRevenue Exchange costOfRevenue
0 2.601740e+11 NASDAQ 1.617820e+11
1 2.601740e+11 NASDAQ 1.617820e+11
2 2.655950e+11 NASDAQ 1.637560e+11
3 2.655950e+11 NASDAQ 1.637560e+11
转换和转换回来后,我有
[[2.60174e+11 0.00000e+00 1.61782e+11]
[2.60174e+11 0.00000e+00 1.61782e+11]
[2.65595e+11 0.00000e+00 1.63756e+11]
[2.65595e+11 0.00000e+00 1.63756e+11]
这是我的代码:
catergoryEncoder = OrdinalEncoder()
cleanData['Exchange'] = catergoryEncoder.fit_transform(X_train['Exchange'].values.reshape(-1, 1))
scaler = MinMaxScaler()
scaled = scaler.fit_transform(X_train)
unscaled = scaler.inverse_transform(scaled)
未缩放的输出只是输出我上面显示的内容。我认为我面临的一些挑战是,我从 pandas 数据框开始,但在转换后,我有一个 NumPy 数组,我不清楚如何将“exchange”列转换回来。
我知道将分类数据转换回来的命令,它是:catergoryEncoder.inverse_transform(np.asarray(unscaled.Exchange).reshape(-1, 1)),但我收到以下错误(我怀疑是因为在缩放/取消缩放时列名丢失了):
AttributeError: 'numpy.ndarray' object has no attribute 'Exchange'
我可以做些什么来轻松地来回转换?我也以正确的方式接近这个吗?
【问题讨论】:
-
嘿,您是否尝试在未缩放的数据上使用 OrdinalEncoder 的 inverse transform function ?
-
@BruceSwain 谢谢布鲁斯。我不确定如何应用它。我应该提一下,我知道可以使用的命令-categoryEncoder.inverse_transform(np.asarray(unscaled.Exchange).reshape(-1, 1)) 但我怀疑它不起作用,因为它位于没有概念的 np 框架上原始标题。我想。
标签: python pandas numpy scikit-learn