python - 如何在所有列上使用 RobustScaler?
问题描述
现在我有一个 2 x 2 numpy 数组。通过使用 RobustScaler,它一次规范化每一列,而我希望一次规范化所有内容。有没有办法做到这一点?
解决方案
从文档RobustScaler:
移除中位数并根据分位数范围缩放数据
所以你需要计算整个数组的中位数和分位数范围,为此你可以使用np.median和np.percentile函数,这就是 sklearn 在后台所做的。编码:
import numpy as np
from sklearn.preprocessing import robust_scale
data = np.array([[3, 6],
[9, 12]], dtype=np.float64)
result = robust_scale(data, axis=0)
print(result)
reshape = data.reshape((1, 4))
result = robust_scale(reshape, axis=1)
me = np.median(data.flat) # 7.5
percentiles = np.percentile(data, (25.0, 75.0)) # 5.25 9.75
data -= me
data /= (percentiles[1] - percentiles[0])
print(data)
输出
[[-1. -1.]
[ 1. 1.]]
[[-1. -0.33333333]
[ 0.33333333 1. ]]
在我使用的示例中,(25.0, 75.0)
因为这是分位数范围的默认值,而且函数robust_scale也等效于 RobustScaler 的功能(参见文档中的另请参阅部分)。
推荐阅读
- php - LARAVEL行克隆获取选择SQL错误
- cypress - 根据类名获取元素 - 赛普拉斯
- javascript - 使用反应的全屏覆盖导航问题
- swift - 如何在 attributesPlaceholder 中设置可访问性标识符
- github - 分支部署时出错 - Github
- reactjs - 我的代码可以渲染但不能留在本地主机上,这是怎么回事?
- python - 在 Django 应用程序中加载 TensorFlow 模型的位置
- symfony - laelaps gearman synfony 捆绑工作负载
- reactjs - d3:放大双 y 刻度损坏
- java - 在 Spring 的 swagger 中,是否可以将 Responses 的示例值设置为与方法的返回类型不同?