web-dev-qa-db-fra.com

Sci-kit et résumé de la régression

En tant qu'utilisateur R, je souhaitais aussi me familiariser avec scikit. 

Commencé avec Linear, Ridge et Lasso. J'ai parcouru les exemples. Ci-dessous se trouve la base des MCO. 

Configurer le (s) modèle (s) semble assez raisonnable, mais n'arrive pas à trouver un moyen raisonnable d'obtenir un ensemble standard de résultats de régression. 

Exemple dans mon code:

# Linear Regression
import numpy as np
from sklearn import datasets
from sklearn.linear_model import LinearRegression
# load the diabetes datasets
dataset = datasets.load_diabetes()
# fit a linear regression model to the data
model = LinearRegression()
model.fit(dataset.data, dataset.target)
print(model)
# make predictions
expected = dataset.target
predicted = model.predict(dataset.data)
# summarize the fit of the model
mse = np.mean((predicted-expected)**2)
print model.intercept_, model.coef_, mse, 
print(model.score(dataset.data, dataset.target))

On dirait que intercept et coef sont intégrés dans le modèle, et je tape simplement print (avant-dernière ligne) pour les voir. Qu'en est-il de toutes les autres sorties de régression standard telles que R ^ 2, valeurs ajustées R ^ 2, p, etc. Si je lis correctement les exemples, il semblerait que vous deviez écrire une fonction/une équation pour chacun de ceux-ci, puis l'imprimer. 

Alors, n'y a-t-il pas de sortie de résumé standard pour les modèles lin reg?

En outre, dans mon tableau imprimé de sorties de coefficients, il n'y a pas de noms de variable associés à chacun de ceux-ci? Je viens de recevoir le tableau numérique. Existe-t-il un moyen de les imprimer pour obtenir une sortie des coefficients et de la variable à laquelle ils correspondent? 

Ma sortie imprimée

LinearRegression(copy_X=True, fit_intercept=True, normalize=False)
152.133484163 [ -10.01219782 -239.81908937  519.83978679  324.39042769 -792.18416163
  476.74583782  101.04457032  177.06417623  751.27932109   67.62538639] 2859.69039877
0.517749425413

Merci aux utilisateurs scilearn.

14
mpg

Il n'existe aucun rapport récapitulatif de régression de type R dans sklearn. La raison principale en est que sklearn est utilisé pour la modélisation prédictive/l'apprentissage automatique et que les critères d'évaluation sont basés sur les performances obtenues avec des données inédites (telles que la valeur prédictive r 2 pour la régression).

Il existe une fonction récapitulative pour la classification appelée sklearn.metrics.classification_report qui calcule plusieurs types de scores (prédictifs) sur un modèle de classification.

Pour une approche statistique plus classique, jetez un oeil à statsmodels.

29
eickenberg

le package statsmodel donne un résumé assez décent

from statsmodel.api import OLS
OLS(dataset.target,dataset.data).fit().summary()
1
Akshay Dalal