Python:从Scrath开发多个线性回归模型

问题描述 投票:-1回答:1

我正在尝试从python开始从头创建多元线性回归模型。使用的数据集:Boston Housing Dataset中的Sklearn。由于我专注于模型构建,因此我没有对数据执行任何预处理步骤。但是,我使用OLS模型来计算p值,并从数据中删除了3个特征。之后,我使用线性回归模型找出每个特征的权重。

import pandas as pd
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression

X=load_boston()
data=pd.DataFrame(X.data,columns=X.feature_names)
y=X.target
data.head()

#dropping three features
data=data.drop(['INDUS','NOX','AGE'],axis=1)

#new shape of the data (506,10) not including the target variable

#Passed the whole dataset to Linear Regression Model
model_lr=LinearRegression()
model_lr.fit(data,y)

model_lr.score(data,y)
0.7278959820021539

model_lr.intercept_
22.60536462807957   #----- intercept value

model_lr.coef_
array([-0.09649731,  0.05281081,  2.3802989 ,  3.94059598, -1.05476566,
        0.28259531, -0.01572265, -0.75651996,  0.01023922, -0.57069861]) #--- coefficients

现在,我想在python中创建模型之前先在excel中手动计算系数。为了计算每个特征的权重,我使用了以下公式:

Calculating the Weights of the Features

为了计算截距,我使用了公式b0 =平均值(y)-b1 *平均值(x1)-b2 *(平均值(x2)....- bn *平均值(xn)

根据我的计算得出的截距值为22.63551387(与模型的截距几乎相同)

问题是,根据我的计算得出的特征权重与sklearn线性模型的权重相差甚远。

-0.002528644 #-- CRIM
-0.001028914 #-- Zn
-0.038663314 #-- CHAS
-0.035026972 #-- RM
-0.014275311 #-- DIS
-0.004058291 #-- RAD
-0.000241103 #-- TAX
-0.015035534 #-- PTRATIO
-0.000318376 #-- B
-0.006411897 #-- LSTAT

使用第一行作为测试数据来检查我的计算,我得到22.73167044199992,而线性回归模型预测为30.42657776。原始值为24。

但是,当我检查其他行时,sklearn模型的变化更大,而根据我的计算得出的权重所做的预测都显示了接近22的值。

我认为我在计算权重时犯了一个错误,但是我不确定问题出在哪里?我的计算中有错误吗?为什么我所有的计算系数都如此接近0?

这是我的系数计算代码:(从这里开始)

 x_1=[]
 x_2=[]
 for i,j in zip(data['CRIM'],y):
      mean_x=data['CRIM'].mean()
      mean_y=np.mean(y)
      c=i-mean_x*(j-mean_y)
      d=(i-mean_x)**2
      x_1.append(c)
      x_2.append(d)
 print(sum(x_1)/sum(x_2))

感谢您阅读这篇长文章,我很感激。

我正在尝试从python开始从头创建多元线性回归模型。使用的数据集:来自Sklearn的Boston Housing数据集。由于我专注于模型构建,因此我没有执行任何预...

python machine-learning scikit-learn linear-regression
1个回答
0
投票

似乎麻烦在于系数计算。您给出的用于计算系数的公式为标量形式,用于最简单的线性回归,即只有一个特征x。

© www.soinside.com 2019 - 2024. All rights reserved.