python sklearn 多重线性回归显示 R-squared

我计算了多重线性回归方程,我想查看调整后的 R-squared。我知道 score 函数可以让我看到 R-squared,但它不是调整后的。

我手动检查了,0.87764 是 R-squared;而 0.863248 是调整后的 R-squared。


回答:

计算 R^2调整后的 R^2 有许多不同的方法,以下是其中几种(使用您提供的数据计算):

from sklearn.linear_model import LinearRegressionmodel = LinearRegression()X, y = df[['NumberofEmployees','ValueofContract']], df.AverageNumberofTicketsmodel.fit(X, y)

SST = SSR + SSE (参考定义)

# 使用理论公式计算yhat = model.predict(X)SS_Residual = sum((y-yhat)**2)       SS_Total = sum((y-np.mean(y))**2)     r_squared = 1 - (float(SS_Residual))/SS_Totaladjusted_r_squared = 1 - (1-r_squared)*(len(y)-1)/(len(y)-X.shape[1]-1)print r_squared, adjusted_r_squared# 0.877643371323 0.863248473832# 使用 sklearn linear_model 计算,尽管在文档中找不到直接计算调整后 R-squared 的函数print model.score(X, y), 1 - (1-model.score(X, y))*(len(y)-1)/(len(y)-X.shape[1]-1)# 0.877643371323 0.863248473832 

另一种方法:

# 使用 statsmodels 计算,通过手动添加截距import statsmodels.api as smX1 = sm.add_constant(X)result = sm.OLS(y, X1).fit()#print dir(result)print result.rsquared, result.rsquared_adj# 0.877643371323 0.863248473832

还有一种方法:

# 使用 statsmodels 计算,另一种方式,使用公式import statsmodels.formula.api as smresult = sm.ols(formula="AverageNumberofTickets ~ NumberofEmployees + ValueofContract", data=df).fit()#print result.summary()print result.rsquared, result.rsquared_adj# 0.877643371323 0.863248473832

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注