Я пытаюсь использовать StandardScaler для масштабирования функций нейронной сети.
Допустим, тогда нейронная сеть имеет следующие функции:
1.0 2.0 3.0
4.0 5.0 6.0
4.0 11.0 12.0
etc ...
Когда я применяю StandardScaler ко всему (все строки), я получаю следующий результат для первой строки:
['-0.920854068785', '-0.88080603151', '-0.571888559111']
Когда я пытаюсь применить StandardScaler только к первой строке (матрица, состоящая только из первой строки), я получаю совершенно другой результат.
['0.0', '0.0', '0.0']
Очевидно, нейронная сеть так работать не будет, потому что строки не совпадают. Есть ли способ использовать стандартный скалер таким образом, чтобы каждый раз получать одни и те же результаты для одного и того же ввода (строки)?
Вот код и вывод:
from sklearn.preprocessing import StandardScaler
import numpy as np
sc = StandardScaler()
#defining the (big) matrix
AR = np.array([[1.0,2.0,3.0],[4.0,5.0,6.0],[4.0,11.0,12.0],[42.0,131.0,1121.0],[41.0,111.0,121.0]])
AR = sc.fit_transform(AR)
print "fited data from big array:"
m=0
for row in AR:
m = m + 1
if m==1:print [str(m) for m in row]
#defining the (small) matrix
AR1 = np.array([[1.0,2.0,3.0]])
AR1 = sc.fit_transform(AR1)
print "fited data from small array"
for row in AR1:
print [str(m) for m in row]
Результат:
fited data from big array:
['-0.920854068785', '-0.88080603151', '-0.571888559111']
fited data from small array
['0.0', '0.0', '0.0']
fit_transform
являются[n_samples, n_features]
. Это масштабирование по столбцам. В каждом столбце есть только одно значение, поэтому вы получаете 0. - person pault   schedule 13.01.2018fit_transform(AR)
иtransform(AR1)
- person pault   schedule 13.01.2018