如何在Python中计算残差平方和
残差平方和 (RSS) 计算回归模型中的方差程度。它估计模型预测中的误差水平。残差平方和越小,模型越适合您的数据;残差平方和越大,越差。它是观测数据减去预测数据的平方和。
公式:
方法1 :使用其基本公式
在这种方法中,我们将数据集分为自变量和因变量。我们导入 sklearn.linear_model.LinearRegression()。我们将数据拟合到其中,然后使用 predict() 方法进行预测。由于数据集仅包含 100 行,因此不需要进行训练测试拆分。
要查看和下载使用的数据集,请单击此处。
Python
# 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']))))
Python
# 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)
输出:
residual sum of squares is : 583207.4514802304
方法二:使用 statsmodel.api
在这种方法中,我们导入 statsmodel.api。读取数据集后,与之前的方法类似,我们将独立特征和依赖特征分开。我们将它们拟合到 sm.OLS() 回归模型中。该模型有一个汇总方法,可以汇总所有指标和回归结果。 model.ssr 为我们提供了残差平方和 (RSS) 的值。我们可以看到,我们从前面的方法导出的值与 model.ssr 值相同。
要查看和下载使用的数据集,请单击此处。
Python
# 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