validacion una true sklearn scikit revisión regresion n_splits muestra lineal learn kfold hold example español entrenamiento cuenta cruzada cross python scikit-learn regression

python - una - Scikit-learn puntuación de validación cruzada para regresión



scikit learn k fold (2)

¿Cómo se puede usar cross_val_score para la regresión? La puntuación predeterminada parece ser la precisión, que no es muy significativa para la regresión. Supuestamente me gustaría usar el error cuadrático medio, ¿es posible especificar eso en cross_val_score ?

Probé los dos siguientes pero no funciona:

scores = cross_validation.cross_val_score(svr, diabetes.data, diabetes.target, cv=5, scoring=''mean_squared_error'')

y

scores = cross_validation.cross_val_score(svr, diabetes.data, diabetes.target, cv=5, scoring=metrics.mean_squared_error)

El primero genera una lista de números negativos, mientras que el error cuadrático medio siempre debe ser no negativo. El segundo se queja de que:

mean_squared_error() takes exactly 2 arguments (3 given)


El primero es correcto. Produce el negativo del MSE, ya que siempre trata de maximizar la puntuación. Por favor ayúdenos sugiriendo una mejora a la documentación.


No tengo la reputación de comentar, pero quiero proporcionar este enlace para usted y / o un transeúnte donde se discute la salida negativa del MSE en scikit learn - https://github.com/scikit-learn/scikit-learn/issues/2439

Además (para que esto sea una respuesta real), su primera opción es correcta, ya que no solo MSE es la métrica que desea usar para comparar modelos, sino que R ^ 2 no se puede calcular dependiendo (creo) del tipo de valor cruzado que usted utiliza. están usando.

Si elige MSE como un anotador, genera una lista de errores que puede tomar como medio:

# Doing linear regression with leave one out cross val from sklearn import cross_validation, linear_model import numpy as np # Including this to remind you that it is necessary to use numpy arrays rather # than lists otherwise you will get an error X_digits = np.array(x) Y_digits = np.array(y) loo = cross_validation.LeaveOneOut(len(Y_digits)) regr = linear_model.LinearRegression() scores = cross_validation.cross_val_score(regr, X_digits, Y_digits, scoring=''mean_squared_error'', cv=loo,) # This will print the mean of the list of errors that were output and # provide your metric for evaluation print scores.mean()