Я изучаю машинное обучение и использую 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?