📜  如何在Python中计算残差平方和

📅  最后修改于: 2022-05-13 01:54:49.766000             🧑  作者: Mango

如何在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