Правильный способ масштабирования данных

Я использую TensorFlow для создания простой модели DNN. Когда я обучаю свои данные, я масштабирую все данные поезда следующим образом:

X_scaler = preprocessing.StandardScaler()
X_standard = X_scaler.fit_transform(X_train)

Но когда я использую контрольную точку моей модели, мне нужно снова масштабировать ввод. Поэтому я масштабирую отдельный образец, например:

X_scaler = preprocessing.StandardScaler()
X_standard = X_scaler.transform(X_test)

Но масштабирование одиночного сэмпла дает мне [[0.000000 0.000000 0.000000 0.000000 0.000000 ]]

Может ли кто-нибудь объяснить мне, что я делаю не так и как правильно масштабировать? Мои данные о поезде - это файл csv, и внутри он выглядит так:

[[11.000000 61.000000 134217728.000000 ... 0.000000 46596.313072
  272756.723290]
 [1.000000 87.000000 134217728.000000 ... 16.449219 13925.136928
  289477.942990]
 [16.000000 73.000000 2097152.000000 ... 19567.666016 50885.644772
  305358.707758]]

Мой единственный тестовый образец такой же, но это только один элемент в массиве:

[[57.000000 14.000000 2097152.000000 5.000000 3.000000 3.000000 0.000000
  262.000000 81788928.000000 1001.000000 527593.000000 349181.000000
  182.000000 11.000000 0.349954 0.701496 95.800000 2.280000 1.790000
  13141380.000000 3166248.000000 19.420000 25.400000 100.740000
  31004.910000 2.000000 1000000000.000000 93.370000 3.030000 3.540000
  11483952.000000 3923548.000000 25.470000 40.370000 186.790000
  49280.940000 18.000000 3700000000.000000 750.371094 17519.000000
  27508.000000 18915.000000 149477.500000 2080774.000000 189943.000000
  0.000325 5.376465 350.303954 370104.379128]]

Вы создаете экземпляр другого X_scalar перед вызовом преобразования на X_test? Вы бы заменили первый X_scalar, который был установлен на X_train, поэтому он не масштабируется должным образом. Удалите второй X_scaler = preprocessing.StandardScaler().

Troy 10.09.2018 04:58

Я не думаю, что это проблема, так как с первым скейлером я создаю модель, а со вторым я использую созданную модель ckpt и снова масштабирую входные данные и загружаю их в модель.

Sim 10.09.2018 05:23

Нет, ваша модель обучена на данных, которые были масштабированы определенным образом (вашим первым X_scalar), поэтому она ожидает ввода во время прогнозирования, которое было масштабировано способом тем же. то есть вам необходимо применить первый X_scalar к вашим тестовым данным. Кроме того, даже если это не так, вы вызываете метод .transform со вторым X_scalar еще до того, как он хоть чем-то был оснащен.

Troy 10.09.2018 05:28

Означает ли это, что я должен передать X_scaler = preprocessing.StandardScaler() между поездом и моделью, чтобы как-то сохранить его в TF в сеансе?

Sim 10.09.2018 05:44

Трой, я думаю, вы ошибаетесь, я считаю, что метод масштабирования масштабируется по образцам, а не по функциям, поэтому, если я использую следующий код: X_test = [[3, 1, ....... 1, 1]] X_scaler = preprocessing.StandardScaler() X_test_test = X_scaler.fit_transform(X_test) print(X_test_test) сам снова дает мне 0s: [[0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000]]

Sim 10.09.2018 06:51
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
5
65
0

Другие вопросы по теме