У меня есть готовый для моделирования фрейм данных, он содержит непрерывные переменные и переменные с горячим кодированием
ID Limit Bill_Sep Bill_Aug Payment_Sep Payment_Aug Gender_M Gender_F Edu_Uni DEFAULT_PAYMT
1 10000 2000 350 1000 350 1 0 1 1
2 30000 3000 5000 500 500 0 1 0 0
3 20000 8000 10000 8000 5000 1 0 1 1
4 45000 450 250 450 250 0 1 0 1
5 60000 700 1000 700 1000 1 0 1 1
6 8000 300 5000 300 2000 1 0 1 0
7 30000 3000 10000 1000 5000 0 1 1 1
8 15000 1000 1250 500 1750 0 1 1 1
Все числовые переменные имеют тип int64, а переменные с горячим кодированием - uint8 ». Двоичная переменная результата - DEFAULT_PAYMT.
Я пошел по обычному способу разделения тестов поездов здесь, но я хотел посмотреть, смогу ли я применить стандартизатор только для переменных int64 (т. Е. Переменных, которые не были закодированы в горячем виде)?
featurelist = df.drop(['ID','DEFAULT_PAYMT'],axis = 1)
X = featurelist
y = df['DEFAULT_PAYMT']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform (X_test)
Я пытаюсь выполнить следующий код и, похоже, работает, однако я не уверен, как объединить категориальные переменные (которые не были масштабированы) обратно в массивы X_scaled_tr и X_scaled_t. Спасибо за любую помощь, спасибо!
featurelist = df.drop(['ID','DEFAULT_PAYMT'],axis = 1)
X = featurelist
y = df['DEFAULT_PAYMT']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)
sc = StandardScaler()
X_scaled_tr = X_train.select_dtypes(include=['int64'])
X_scaled_t = X_test.select_dtypes(include=['int64'])
X_scaled_tr = sc.fit_transform(X_scaled_tr)
X_scaled_t = sc.transform(X_scaled_t)