Для решения задачи с двумя целевыми переменными (одна категориальная и одна непрерывная), нужно учитывать специфику каждой из них и выбирать соответствующие методы машинного обучения. Такой подход известен как multi-output learning или multi-task learning.
Обработка данных: Убедитесь, что ваши данные подготовлены, включая очистку, обработку пропущенных значений и масштабирование признаков.
Разделение данных: Разделите данные на обучающую и тестовую выборки. Это позволит вам оценить производительность модели.
Существует несколько подходов для обучения моделей с двумя целевыми переменными:
Это самый простой подход, при котором вы обучаете две отдельные модели: одну для категориальной целевой переменной и одну для непрерывной целевой переменной.
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression, LinearRegression
from sklearn.metrics import accuracy_score, mean_squared_error
# Пример данных
data = pd.DataFrame({
'feature1': np.random.rand(100),
'feature2': np.random.rand(100),
'target_cat': np.random.choice([0, 1], size=100),
'target_cont': np.random.rand(100) * 100
})
# Разделение данных
X = data[['feature1', 'feature2']]
y_cat = data['target_cat']
y_cont = data['target_cont']
X_train, X_test, y_cat_train, y_cat_test, y_cont_train, y_cont_test = train_test_split(X, y_cat, y_cont, test_size=0.2, random_state=42)
# Обучение модели классификации
model_cat = LogisticRegression()
model_cat.fit(X_train, y_cat_train)
# Обучение модели регрессии
model_cont = LinearRegression()
model_cont.fit(X_train, y_cont_train)
# Предсказания
y_cat_pred = model_cat.predict(X_test)
y_cont_pred = model_cont.predict(X_test)
# Оценка моделей
accuracy = accuracy_score(y_cat_test, y_cat_pred)
mse = mean_squared_error(y_cont_test, y_cont_pred)
print(f'Accuracy для категориальной переменной: {accuracy}')
print(f'MSE для непрерывной переменной: {mse}')
Выбор подхода зависит от структуры данных, взаимосвязи между целевыми переменными и требований к модели.