2015-11-30 2 views
0

У меня есть некоторые данные, на которые я применил масштабирование с помощью scikit-learn. После масштабирования я хотел бы восстановить исходные данные. Это возможно? Если нет, как я могу получить соответствие из исходных данных.Как восстановить необработанные данные из масштабированных данных?

Вот пример игрушки

from sklearn.datasets import load_iris 
from sklearn.preprocessing import scale 
iris = load_iris() 
X = iris.data 
X_scale = scale(X) 
print X[:4] 
print X_scale[:4] 

производства

[[ 5.1 3.5 1.4 0.2] 
[ 4.9 3. 1.4 0.2] 
[ 4.7 3.2 1.3 0.2] 
[ 4.6 3.1 1.5 0.2]] 
[[-0.90068117 1.03205722 -1.3412724 -1.31297673] 
[-1.14301691 -0.1249576 -1.3412724 -1.31297673] 
[-1.38535265 0.33784833 -1.39813811 -1.31297673] 
[-1.50652052 0.10644536 -1.2844067 -1.31297673]] 

Как из вторых данных можно восстановить исходные данные?

ответ

1

Один из наиболее распространенных способов масштабирования функций масштабирует данные, устанавливая среднее значение набора данных в ноль и стандартное отклонение на единицу. Это чрезвычайно полезно для многих алгоритмов обучения. Это достигается просто следующим образом:

scaled_array = (original_array - mean_of_array)/std_of_array 

В Sklearn каждый столбец массива, по-видимому, масштабируется таким образом. Чтобы найти исходные данные, просто перестройте приведенное выше или, наоборот, просто вычислите стандартное отклонение и среднее значение для каждого столбца в немасштабированных данных. Затем вы можете использовать это, чтобы преобразовать масштабированные данные обратно в исходные данные в любое время.

Для получения дополнительной информации о том, как работает масштабирование Склеарна, документы: here. Чтобы узнать больше о масштабировании функций в целом, wiki page - хорошее место для начала.

+0

Спасибо, это отличный ответ. – Michael

0

MarkyD43 предоставил отличный ответ на этот вопрос. Вот версия кода преобразования данных обратно в оригинальную версию

from sklearn.datasets import load_iris 
from sklearn.preprocessing import scale 
iris = load_iris() 
X = iris.data 

mean_of_array = X.mean(axis=0) 
std_of_array = X.std(axis=0) 

X_scale = scale(X) 

X_original = (X_scale * std_of_array) + mean_of_array 

print X[:4] 
print X_original[:4] 

производства

[[ 5.1 3.5 1.4 0.2] 
[ 4.9 3. 1.4 0.2] 
[ 4.7 3.2 1.3 0.2] 
[ 4.6 3.1 1.5 0.2]] 
[[ 5.1 3.5 1.4 0.2] 
[ 4.9 3. 1.4 0.2] 
[ 4.7 3.2 1.3 0.2] 
[ 4.6 3.1 1.5 0.2]] 
Смежные вопросы