Как правильно inverse_transform catergorical значение после того, как оно было преобразовано / масштабировано с числовыми значениями? - PullRequest
0 голосов
/ 28 марта 2020

Я изучаю машинное обучение и использую sklearn для масштабирования своих данных перед отправкой в ​​Keras. Я пытаюсь найти способ быстро масштабировать и масштабировать мои данные (чтобы изучить результаты).

Мой код работает по большей части, кроме случаев, когда я добавляю текстовые категории. Я использую OrdinalEncoder, чтобы превратить его в поле нумерации c, а затем обработать, но у меня возникли некоторые проблемы с преобразованием его обратно. Я подозреваю, потому что я начинаю с pandas фрейма данных, а затем конвертирующая обработка возвращает numpy.

Есть ли лучший подход к этому?

код:

#check to see if there is any catergories
catergoryEncoder = OrdinalEncoder()
columnsObjects = list(cleanData.select_dtypes(include=['object']).columns) 
if len(columnsObjects) != 0:
    cleanData[columnsObjects] = OrdinalEncoder().fit_transform(cleanData[columnsObjects].values.reshape(-1, 1))

#add data 
y_train=cleanData[variableToPredict]
X_train=cleanData
X_train = X_train.drop(columns=variableToPredict) 

scaler = MinMaxScaler()
scaled = scaler.fit_transform(X_train)
unscaled = scaler.inverse_transform(scaled)
# if len(columnsObjects) != 0:  
#     unscaled[columnsObjects] = OrdinalEncoder().inverse_transform(unscaled[columnsObjects].values.reshape(-1, 1))

Оригинальные данные (я опускаю первый столбец после, но хочу показать обмен, прежде чем я использую ordinalEncoder ():

      grossProfit  totalRevenue Exchange  costOfRevenue
0    9.839200e+10  2.601740e+11   NASDAQ   1.617820e+11
1    9.839200e+10  2.601740e+11   NASDAQ   1.617820e+11
2    1.018390e+11  2.655950e+11   NASDAQ   1.637560e+11

масштабированные данные:

[[0.97916859 0.         0.98769127]
 [0.97916859 0.         0.98769127]
 [1.         0.         1.        ]
 [1.         0.         1.        ]
 [0.86027468 0.         0.85840598]
 [0.86027468 0.         0.85840598]

немасштабированные данные:

[[2.60174e+11 0.00000e+00 1.61782e+11]
 [2.60174e+11 0.00000e+00 1.61782e+11]
 [2.65595e+11 0.00000e+00 1.63756e+11]
 [2.65595e+11 0.00000e+00 1.63756e+11]
 [2.29234e+11 0.00000e+00 1.41048e+11]
 [2.29234e+11 0.00000e+00 1.41048e+11]

Как я могу прочитать категорию текста / обмена обратно в мои данные, в отличие от представления чисел c?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...