📌 Как решить задачу, где присутствует одновременно два target - один categorical другой continuous ?



💬 Спрашивают в 14% собеседований



Для решения задачи с двумя целевыми переменными (одна категориальная и одна непрерывная), нужно учитывать специфику каждой из них и выбирать соответствующие методы машинного обучения. Такой подход известен как multi-output learning или multi-task learning.



1️⃣ Подготовка данных



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



Разделение данных: Разделите данные на обучающую и тестовую выборки. Это позволит вам оценить производительность модели.



2️⃣ Выбор модели и методологии



Существует несколько подходов для обучения моделей с двумя целевыми переменными:



2️⃣.1️⃣. Обучение двух отдельных моделей



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

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}')




Можно обучить две отдельные модели для каждой целевой переменной или использовать единую модель с двумя выходами.



Для каждой модели используйте соответствующие метрики для оценки производительности.



Обучение единой модели с двумя выходами может быть более эффективно, если целевые переменные связаны между собой.



Выбор подхода зависит от структуры данных, взаимосвязи между целевыми переменными и требований к модели.



🔥 ТОП ВОПРОСОВ С СОБЕСОВ



🔒 База собесов | 🔒 База тестовых