python - 将 MinMaxScaler 与某些数据一起使用时出错
问题描述
我正在尝试使用 MinMaxScaler 来规范化我的数据。奇怪的是有些数据有效,有些则无效。
我的 x 数据包含坐标,具有形状 (21,24321)。因此,有 21 行和 24321 列,如下所示:
array([[-1.72507889, -1.70618793, -1.68895362, ..., 1.68897011,
1.70620441, 1.72343872],
[-1.72507889, -1.70618793, -1.68895362, ..., 1.68897011,
1.70620441, 1.72343872],
[-1.72507889, -1.70618793, -1.68895362, ..., 1.68897011,
1.70620441, 1.72343872],
...,
[-1.72507889, -1.70618793, -1.68895362, ..., 1.68897011,
1.70620441, 1.72343872],
[-1.72507889, -1.70618793, -1.68895362, ..., 1.68897011,
1.70620441, 1.72343872],
[-1.72507889, -1.70618793, -1.68895362, ..., 1.68897011,
1.70620441, 1.72343872]])
每行的值相同,因此第 1 行的值与第 20 行的值相同。
当我运行时:
x_scaler = MinMaxScaler(feature_range=(-1,1))
x = x_scaler.fit_transform(x)
I get:
array([[ 0., 1., 1., ..., 0., 1., -1.],
[ 0., 1., 1., ..., 0., 1., -1.],
[ 0., 1., 1., ..., 0., 1., -1.],
...,
[ 0., 1., 1., ..., 0., 1., -1.],
[ 0., 1., 1., ..., 0., 1., -1.],
[ 0., 1., 1., ..., 0., 1., -1.]])
另一方面,如果我使用标准公式:
x_max = np.max(x)
x_min = np.min(x)
x = 2*((x-x_min)/(x_max-x_min)-0.5)
I get:
array([[-1. , -0.98904401, -0.97904881, ..., 0.98000961,
0.9900048 , 1. ],
[-1. , -0.98904401, -0.97904881, ..., 0.98000961,
0.9900048 , 1. ],
[-1. , -0.98904401, -0.97904881, ..., 0.98000961,
0.9900048 , 1. ],
...,
[-1. , -0.98904401, -0.97904881, ..., 0.98000961,
0.9900048 , 1. ],
[-1. , -0.98904401, -0.97904881, ..., 0.98000961,
0.9900048 , 1. ],
[-1. , -0.98904401, -0.97904881, ..., 0.98000961,
0.9900048 , 1. ]])
为什么会这样?是有一些错误还是我做错了?
谢谢
解决方案
在我看来,您的数据正在错误的轴上进行迭代。
x_scaler = MinMaxScaler(feature_range=(-1,1))
x = x_scaler.fit_transform(x.T).T
应该给你你期望的值
推荐阅读
- arrays - 创建数组后可以更改数组中的值吗?
- database - Grouping and adding values of grouped data. Problem with writing a query
- ios - Xcode 10 无法发出用于桥接头的预编译标头
- python - “类型”对象不可下标
- java - 根据输入的参数后缀选择要使用的方法的程序
- ios - 状态栏下方的 UIViewController 和 tableView
- c - 两种不同结果的数组问题,即正面或负面
- html - React JS在img html标签上编辑图像覆盖
- node.js - WSL - 无论如何都可以将安装在 Linux 中的节点添加到 Windows PATH 中?
- java - 编写一个需要查看字符串并判断两个字母是否相邻的方法