Я имею дело с набором данных регрессии, и я хочу подогнать конкретную модель к моему набору данных после оценки производительности различных моделей. Для этого я использовал cross_val_score из sklearn.model_selection. После того, как я выбрал параметр оценки как «r2», я получил очень отрицательные значения для некоторых из моих моделей.
demo = pd.read_csv('demo.csv')
X_train = demo.iloc[0:1460, : ]
Y_train = pd.read_csv('train.csv').loc[:, 'SalePrice':'SalePrice']
X_test = demo.iloc[1460: , : ]
regressors = []
regressors.append(LinearRegression())
regressors.append(Ridge())
regressors.append(Lasso())
regressors.append(ElasticNet())
regressors.append(Lars())
regressors.append(LassoLars())
regressors.append(OrthogonalMatchingPursuit())
regressors.append(BayesianRidge())
regressors.append(HuberRegressor())
regressors.append(RANSACRegressor())
regressors.append(SGDRegressor())
regressors.append(GaussianProcessRegressor())
regressors.append(DecisionTreeRegressor())
regressors.append(RandomForestRegressor())
regressors.append(ExtraTreesRegressor())
regressors.append(AdaBoostRegressor())
regressors.append(GradientBoostingRegressor())
regressors.append(KernelRidge())
regressors.append(SVR())
regressors.append(NuSVR())
regressors.append(LinearSVR())
cv_results = []
for regressor in regressors:
cv_results.append(cross_val_score(regressor, X = X_train, y = Y_train, scoring = 'r2', verbose = True, cv = 10))
После того, как упомянутый выше код скомпилирован и запущен, cv_results будет выглядеть следующим образом. Это список массивов float64. Каждый массив содержит 10 значений 'r2' (из-за cv = 10).
Я открываю первый массив и замечаю, что для этой конкретной модели некоторые значения «r2» крайне отрицательны.
Поскольку значения «r2» должны быть от 0 до 1, почему бывают очень большие отрицательные значения?