使用 sklearn 同时预测字段
Simultaneously predict fields with sklearn
我想同时预测 class 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)
是的,可以使用下面的代码执行此操作,因为 RandomForestRegressor 支持多输出。如果您想尝试不支持多输出的不同模型,您应该使用 sklearn multioutput 中的 MultiOutputRegressor
或 RegressorChain
。
简而言之,MultiOutputRegressor
为每个输出变量拟合一个模型,RegressorChain
为每个输出变量拟合一个模型,但它也使用以前的模型输出作为输入,这就是为什么它被称为 链。以下是关于如何使用这两种策略的快速演示:
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)
您可以找到支持多输出的型号列表和更多信息here
我想同时预测 class 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)
是的,可以使用下面的代码执行此操作,因为 RandomForestRegressor 支持多输出。如果您想尝试不支持多输出的不同模型,您应该使用 sklearn multioutput 中的 MultiOutputRegressor
或 RegressorChain
。
简而言之,MultiOutputRegressor
为每个输出变量拟合一个模型,RegressorChain
为每个输出变量拟合一个模型,但它也使用以前的模型输出作为输入,这就是为什么它被称为 链。以下是关于如何使用这两种策略的快速演示:
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)
您可以找到支持多输出的型号列表和更多信息here