web-dev-qa-db-ja.com

RのようにPython scikitで回帰要約を取得する方法は?

Rユーザーとして、scikitについても理解したいと思いました。

線形回帰モデルの作成は問題ありませんが、回帰出力の標準要約を取得するための合理的な方法を見つけることができないようです

コード例:

# 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))

問題:

  • interceptcoefがモデルに組み込まれているようで、私はprint(2行目から最後の行まで)と入力して、それらを表示します。
  • R ^ 2、調整されたR ^ 2、p値などの他のすべての標準回帰出力はどうですか例を正しく読んだ場合、これらのそれぞれについて関数/方程式を記述してから、印刷する必要があります。
  • したがって、linの標準の要約出力はありません。 reg。モデル?
  • また、係数の出力の印刷された配列では、これらのそれぞれに関連付けられた変数名はありませんか?数値配列だけを取得します。これらを出力する方法はありますか?

私の印刷出力:

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

注:Linear、Ridge、およびLassoから始めました。私は例を試してみました。以下は、基本的なOLS用です。

25
mpg

SklearnにはRタイプの回帰要約レポートはありません。主な理由は、sklearnが予測モデリング/機械学習に使用され、評価基準が以前に表示されていないデータ(回帰の予測r ^ 2など)のパフォーマンスに基づいているためです。

分類モデルのいくつかのタイプの(予測)スコアを計算するsklearn.metrics.classification_reportと呼ばれる分類の要約関数は存在しません。

より古典的な統計的アプローチについては、statsmodelsをご覧ください。

34
eickenberg

私が使う:

import sklearn.metrics as metrics
def regression_results(y_true, y_pred):

    # Regression metrics
    explained_variance=metrics.explained_variance_score(y_true, y_pred)
    mean_absolute_error=metrics.mean_absolute_error(y_true, y_pred) 
    mse=metrics.mean_squared_error(y_true, y_pred) 
    mean_squared_log_error=metrics.mean_squared_log_error(y_true, y_pred)
    median_absolute_error=metrics.median_absolute_error(y_true, y_pred)
    r2=metrics.r2_score(y_true, y_pred)

    print('explained_variance: ', round(explained_variance,4))    
    print('mean_squared_log_error: ', round(mean_squared_log_error,4))
    print('r2: ', round(r2,4))
    print('MAE: ', round(mean_absolute_error,4))
    print('MSE: ', round(mse,4))
    print('RMSE: ', round(np.sqrt(mse),4))
12
Naomi Fridman

statsmodelsパッケージは静かなまともな要約を提供します

from statsmodels.api import OLS
OLS(dataset.target,dataset.data).fit().summary()
5
Akshay Dalal

enter image description here あなたはstatsmodelsを使用して行うことができます

import statsmodels.api as sm
X = sm.add_constant(X.ravel())
results = sm.OLS(y,x).fit()
results.summary()  

results.summary()は結果を3つのテーブルに編成します

0
Sahil Kamboj