sar*_*ara 2 python machine-learning
我想规范化[0,1]范围内的数据。在改组和拆分后是否应该对数据进行规范化?是否应该重复相同的测试步骤?我遇到了使用这种标准化类型的python代码。这是用目标范围[0,1]标准化数据的正确方法吗
`X_train = np.array([[ 1., -1., 2.], [ 2., 0., 0.],[ 0., 1., -1.]])
a= X_train
for i in range(3):
old_range = np.amax(a[:,i]) - np.amin(a[:,i])
new_range = 1 - 0
f = ((a[:,i] - np.amin(a[:,i])) / old_range)*new_range + 0
lis.append(f)
b = np.transpose(np.array(lis))
print(b)`
Run Code Online (Sandbox Code Playgroud)
这是归一化后的结果。
`[[0.5, 0., 1.]
[1., 0.5, 0.33333333]
[0., 1., 0.]]`
Run Code Online (Sandbox Code Playgroud)
改组和拆分后是否应该规范化数据?
是。否则,您将泄漏将来的信息(即在此处进行测试)。更多信息在这里;它是为了标准化而不是标准化(以及R,而不是Python),但是这些参数同样适用。
我应该重复相同的程序进行测试吗?
是。使用适合训练数据集的缩放器。在这种情况下,这意味着使用训练数据集中的最大值和最小值来缩放测试数据集。这样可以确保与训练数据上执行的转换保持一致,并可以评估模型是否可以很好地泛化。
您不必从头开始编写代码。使用sklearn:
import numpy as np
from sklearn import preprocessing
X_train = np.array([[ 1., -1., 2.], [ 2., 0., 0.],[ 0., 1., -1.]])
X_test = np.array([[ 0, -1., 1.5], [ 2.5, 0., 1]])
scaler = preprocessing.MinMaxScaler()
scaler = scaler.fit(X_train)
X_train_minmax = scaler.transform(X_train)
X_test_minmax = scaler.transform(X_test)
Run Code Online (Sandbox Code Playgroud)
注意:对于大多数应用,建议使用标准化进行扩展preprocessing.StandardScaler()
| 归档时间: |
|
| 查看次数: |
741 次 |
| 最近记录: |