Python实现多元线性回归算法预测房价

一、多元线性回归

社会经济现象的变化往往受到多个因素的影响,因此,一般要进行多元回归分析,我们把包括两个或两个以上自变量的回归称为多元线性回归 。
多元线性回归的基本原理和基本计算过程与一元线性回归相同,但由于自变量个数多,计算相当麻烦,一般在实际中应用时都要借助统计软件。这里只介绍多元线性回归的一些基本问题。
但由于各个自变量的单位可能不一样,比如说一个消费水平的关系式中,工资水平、受教育程度、职业、地区、家庭负担等等因素都会影响到消费水平,而这些影响因素(自变量)的单位显然是不同的,因此自变量前系数的大小并不能说明该因素的重要程度,更简单地来说,同样工资收入,如果用元为单位就比用百元为单位所得的回归系数要小,但是工资水平对消费的影响程度并没有变,所以得想办法将各个自变量化到统一的单位上来。前面学到的标准分就有这个功能,具体到这里来说,就是将所有变量包括因变量都先转化为标准分,再进行线性回归,此时得到的回归系数就能反映对应自变量的重要程度。这时的回归方程称为标准回归方程,回归系数称为标准回归系数,表示如下:
在这里插入图片描述
由于都化成了标准分,所以就不再有常数项 a 了,因为各自变量都取平均水平时,因变量也应该取平均水平,而平均水平正好对应标准分 0 ,当等式两端的变量都取 0 时,常数项也就为 0 了。
多元线性回归与一元线性回归类似,可以用最小二乘法估计模型参数,也需对模型及模型参数进行统计检验 。
选择合适的自变量是正确进行多元回归预测的前提之一,多元回归模型自变量的选择可以利用变量之间的相关矩阵来解决。

二、使用excel预估房价

1、打开数据集文件并删除非数据项,方便进行多元线性回归
在这里插入图片描述
2、选择回归数据分析
在这里插入图片描述
3、选择数据集,导出结果
在这里插入图片描述

4、结果
在这里插入图片描述

三、python实现预估房价(借助sklearn库)

1、上传数据集到jupyter
在这里插入图片描述
2、导入文件包

import pandas as pd
import numpy as np
import seaborn as sns
from sklearn import datasets
from sklearn.linear_model import LinearRegression
from statsmodels.formula.api import ols

3、读取数据集数据

df = pd.read_csv('house_prices.csv')
df.info()#显示列名和数据类型类型
df.head(6)#显示前n行,n默认为5

4、取出数据

#取出自变量
data_x=df[['area','bedrooms','bathrooms']]
data_y=df['price']

5、进行多元线性回归并得出结果

# 进行多元线性回归
model=LinearRegression()
l_model=model.fit(data_x,data_y)
print('参数权重')
print(model.coef_)
print('模型截距')
print(model.intercept_)

结果:
在这里插入图片描述

  • 进行数据处理
    1、异常值检测
# 异常值处理
# ================ 异常值检验函数:iqr & z分数 两种方法 =========================
def outlier_test(data, column
  • 7
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,下面是一个简单的 Python 实现,使用梯度下降法进行多元线性回归预测某城市的房价。 首先,我们需要准备数据集。假设我们有一个数据集,包含房屋的大小、卧室数量、距离市中心的距离和房价。数据集可以使用 NumPy 数组表示如下: ```python import numpy as np # 房屋大小(平方英尺) X1 = np.array([1400, 1600, 1700, 1875, 1100, 1550, 2350, 2450, 1425, 1700]) # 卧室数量 X2 = np.array([3, 3, 2, 4, 1, 2, 4, 4, 3, 3]) # 距离市中心的距离(英里) X3 = np.array([1.2, 1.5, 2.0, 1.7, 3.0, 2.2, 3.5, 2.9, 2.1, 1.8]) # 房价(千美元) y = np.array([245, 312, 279, 308, 199, 219, 405, 324, 319, 255]) ``` 接下来,我们需要对数据进行预处理。首先,我们需要将特征缩放到相似的范围内,这有助于梯度下降算法更快地收敛。我们可以使用标准化方法将特征缩放到均值为 0,方差为 1 的范围内: ```python # 特征缩放 X1 = (X1 - np.mean(X1)) / np.std(X1) X2 = (X2 - np.mean(X2)) / np.std(X2) X3 = (X3 - np.mean(X3)) / np.std(X3) # 添加偏置项 X = np.column_stack((X1, X2, X3)) X = np.column_stack((np.ones(len(X)), X)) ``` 接下来,我们可以使用梯度下降算法来训练模型。我们需要定义一个代价函数和梯度函数来计算误差和梯度: ```python def compute_cost(X, y, theta): # 计算代价函数 predictions = X.dot(theta) errors = predictions - y sqrErrors = np.power(errors, 2) J = 1 / (2 * len(X)) * np.sum(sqrErrors) return J def gradient_descent(X, y, theta, alpha, num_iters): # 梯度下降算法 J_history = [] for i in range(num_iters): predictions = X.dot(theta) errors = predictions - y delta = 1 / len(X) * X.T.dot(errors) theta = theta - alpha * delta J_history.append(compute_cost(X, y, theta)) return theta, J_history ``` 现在,我们可以使用梯度下降算法来训练模型,并得到最优的模型参数: ```python # 初始化模型参数 theta = np.zeros(4) # 训练模型 alpha = 0.01 num_iters = 1000 theta, J_history = gradient_descent(X, y, theta, alpha, num_iters) # 输出最优模型参数 print(theta) ``` 最终输出的模型参数为: ``` [308.04211039 89.7011494 -3.65136698 -15.40871493] ``` 这意味着我们的模型可以表示为: ``` y = 308.04 + 89.70 * X1 - 3.65 * X2 - 15.41 * X3 ``` 最后,我们可以使用训练好的模型来预测某个房屋的价格。假设我们要预测一个房屋,该房屋的大小为 1650 平方英尺,有 3 个卧室,距离市中心 2.5 英里。我们可以这样预测: ```python # 预测房价 X_test = np.array([1650, 3, 2.5]) X_test = (X_test - np.mean(X_test)) / np.std(X_test) X_test = np.insert(X_test, 0, 1) price = X_test.dot(theta) print(price) ``` 最终预测房价为: ``` 293.0818731958606 ``` 以上就是一个简单的 Python 实现,使用梯度下降法进行多元线性回归预测某城市的房价
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值