我想同時預測 A、B、C、D 和 0 類的總體積和體積。用下面的代碼可以做到這一點嗎?我是否必須在資料集中添加一個包含我預測的欄位?
import pandas as pd
dataset = pd.read_csv('dataAnalysis/data/featureEngineering/data.csv')
X = dataset.iloc[:, 0:20].values
y = dataset.iloc[:, 21:26].values
# 21 - 'VOLUME_CLASSE_A'
# 22 - 'VOLUME_CLASSE_B'
# 23 - 'VOLUME_CLASSE_C'
# 24 - 'VOLUME_CLASSE_D'
# 25 - 'VOLUME_CLASSE_0'
# 26 - 'TOTAL_VOLUME'
X_train, X_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size = 0.2, random_state=1)
regressor = RandomForestRegressor(n_estimators = 10, random_state = 0)
regressor.fit(X_train, y_train)
test_predictions = regressor.predict(X_test)
uj5u.com熱心網友回復:
是的,因為 RandomForestRegressor 支持多輸出,所以可以使用下面的代碼來做到這一點。如果您想嘗試不支持多輸出的不同模型,您應該使用其中之一MultiOutputRegressor或RegressorChain來自sklearn multioutput。
簡而言之MultiOutputRegressor,為每個輸出變數RegressorChain擬合一個模型,為每個輸出變數擬合一個模型,但它也使用以前的模型輸出作為輸入,這就是為什么它被稱為Chain。以下是有關如何使用這兩種策略的快速演示:
from sklearn.datasets import load_linnerud
from sklearn.multioutput import MultiOutputRegressor, RegressorChain
from sklearn.linear_model import Ridge
X, y = load_linnerud(return_X_y=True)
# MultiOutputRegressor
multi= MultiOutputRegressor(Ridge(random_state=123))
multi.fit(X, y)
# RegressorChain
# Starting with the second output variable, then first then third
re = RegressorChain(base_estimator=Ridge(random_state=123), order=[1,0,2])
re.fit(X,y)
您可以在此處找到支持多輸出的模型串列和更多資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/453458.html
標籤:Python 机器学习 scikit-学习 回归 随机森林
上一篇:如何識別段落中每個句子的情緒
