Регрессия множественных целевых переменных - PullRequest
1 голос
/ 02 августа 2020

У меня есть фрейм данных, где это мои предикторы.

min_time   max_time cluster_label  Day  Week
6000       9000           2        0    3
7000       9000           1        3    3
3000       5300           3        2    4
5000       6000           2        5    4
..

Используя эти функции, мне нужно предсказать 4 функции (целевые переменные или y1, y2, y3, y4)

route_count   Delivieres          Distance     TotalTime

18           22                    290           3500
22           21                    334           5400
19           23                    503           3900
20           44                    674           4000
21           45                    398           6600

как я могу это сделать? Это то, что я пробовал до сих пор, но я не уверен, может ли случайный лес выводить прогноз для нескольких переменных

from sklearn.metrics import,accuracy_score,mean_absolute_error,mean_squared_error
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
X_train, X_test, y_train, y_test = train_test_split( 
                        X, y, test_size = 0.30, random_state = 101)
rfg = RandomForestRegressor(n_estimators=100,criterion="mae")
rfg.fit(X_train, y_train)
y_pred = rfg.predict(X_test)
rfg.score(X_test, y_test)

1 Ответ

0 голосов
/ 02 августа 2020

MultiOutputRegressor может достичь этого. Просто используйте его как обертку.

from sklearn.metrics import,accuracy_score,mean_absolute_error,mean_squared_error
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.multioutput import MultiOutputRegressor
X_train, X_test, y_train, y_test = train_test_split( 
                        X, y, test_size = 0.30, random_state = 101)
rfg = MultiOutputRegressor(RandomForestRegressor(n_estimators=100,criterion="mae"))
rfg.fit(X_train, y_train)
y_pred = rfg.predict(X_test)
rfg.score(X_test, y_test)
...