Sci-kit和回归总结

时间:2014-10-11 21:04:53

标签: python scikit-learn

作为R用户,我一直希望能够加快速度。

开始使用Linear,Ridge和Lasso。我已经完成了这些例子。以下是基本的OLS。

设置模型似乎足够合理 - 但似乎找不到合理的方法来获得一组标准的回归输出。

我的代码示例:

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

似乎像intercept和coef已内置到模型中,我只需键入print(第二行到最后一行)即可查看它们。那么所有其他标准回归输出如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

感谢scilearn用户。

6 个答案:

答案 0 :(得分:30)

sklearn中不存在R型回归摘要报告。主要原因是sklearn用于预测建模/机器学习,评估标准基于以前看不见的数据的性能(例如回归的预测r ^ 2)。

确实存在一个名为sklearn.metrics.classification_report的分类汇总函数,它可以在分类模型上计算几种类型的(预测)分数。

有关更经典的统计方法,请查看statsmodels

答案 1 :(得分:3)

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()会将结果组织成三个表格

答案 2 :(得分:2)

statsmodel软件包给出了一个安静的不错的总结

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

答案 3 :(得分:1)

您可以使用以下选项来创建汇总表:

import statsmodels.api as sm

#log_clf = LogisticRegression()

log_clf =sm.Logit(y_train,X_train)

classifier = log_clf.fit()

y_pred = classifier.predict(X_test)

print(classifier.summary2())

答案 4 :(得分:0)

我使用:

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

答案 5 :(得分:-3)

预测后使用model.summary()

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

# >>>>>>>Print out the statistics<<<<<<<<<<<<<
model.summary()

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