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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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