如何在Python中计算残余的平方和
残差总和(RSS)计算了回归模型中的方差程度。它估计了模型预测中的误差水平。残差和越小,你的模型越适合你的数据;残差和越大,越差。它是观察数据的平方之和减去预测数据的平方之和。
公式:
方法1:使用其Base公式
在这种方法中,我们将数据集分为自变量和因变量。我们导入sklearn.linear_model.LinearRegression()。我们在其中拟合数据,然后使用predict()方法进行预测。由于数据集只包含100行训练测试分割是没有必要的。
要查看和下载所使用的数据集,请点击这里。
# import packages
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
# reading csv file as pandas dataframe
data = pd.read_csv('headbrain2.csv')
# independent variable
X = data[['Head Size(cm^3)']]
# output variable (dependent)
y = data['Brain Weight(grams)']
# using the linear regression model
model = LinearRegression()
# fitting the data
model.fit(X, y)
# predicting values
y_pred = model.predict(X)
df = pd.DataFrame({'Actual': y, 'Predicted':
y_pred})
print(' residual sum of squares is : '+ str(np.sum(np.square(df['Predicted'] - df['Actual']))))
输出:
residual sum of squares is : 583207.4514802304
方法2:使用statsmodel.api
在这种方法中,我们导入statsmodel.api。读取数据集后,与之前的方法类似,我们将独立和依赖特征分开。我们在sm.OLS()回归模型中拟合它们。这个模型有一个总结方法,给出了所有指标和回归结果的总结。model.ssr给了我们残差平方和(RSS)的值。我们可以看到,我们从以前的方法中得出的值与model.ssr的值相同。
要查看和下载所使用的数据集,请点击这里。
# import packages
import pandas as pd
import numpy as np
import statsmodels.api as sm
# reading csv file as pandas dataframe
data = pd.read_csv('headbrain2.csv')
# independent variable
x = data['Head Size(cm^3)']
# output variable (dependent)
y = data['Brain Weight(grams)']
# adding constant
x = sm.add_constant(x)
#fit linear regression model
model = sm.OLS(y, x).fit()
#display model summary
print(model.summary())
# residual sum of squares
print(model.ssr)
输出:
583207.4514802304