python模拟实现线性回归解析解求最优模型

import numpy as np   #数值计算库
import matplotlib.pyplot as plt   #绘图库


# 这里相当于是随机X维度X1,rand是随机[0,1)均匀分布  形状是100行1列
X = 2 * np.random.rand(100, 1)

# 人为的设置真实的Y一列,np.random.randn(100, 1)是设置error,randn是标准正态分布
y = 4 + 3 * X + np.random.randn(100, 1)

# 整合X0和X1构造出X矩阵  [100,2],这是由于权重参数w0恒为1即认为w0为偏置项
X_b = np.c_[np.ones((100, 1)), X]

# 常规等式求解theta
#np.linalg.inv()用于矩阵求逆
#a.T表示矩阵转置
#a.dot(b)为矩阵a,b进行点乘
theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
print(theta_best)


# 创建一个测试集,大小为两行一列
X_new = np.array([[0], [2]])
#把x0=1添加到测试矩阵中构造出两行两列的测试矩阵
X_new_b = np.c_[(np.ones((2, 1))), X_new]

#测试矩阵与权重矩阵相乘求出预测值
y_predict = X_new_b.dot(theta_best)
print(y_predict)

plt.plot(X_new, y_predict, 'r-')#绘制最优解的图线    r表示红色,-表示直线
plt.plot(X, y, 'b.')  #绘制真实样本分布,b表示蓝色,.表示散点
plt.axis([0, 2, 0, 15])   #指定x,y轴的区域范围
plt.show()#显示图形

绘图结果如下:
在这里插入图片描述
可以看出我们利用解析解一步求出最优权重,该一次图线尽可能的穿过真实样本点。
解析解求解公式如下图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python可以使用多种方法实现多元线性回归模型。其中一种常用的方法是使用StatsModels库。在StatsModels库中,可以使用ols函数构建多元线性回归模型。下面是一个示例代码: ```python from statsmodels.formula.api import ols # 构建多元线性回归模型 lm = ols('price ~ area + bedrooms + bathrooms', data=df).fit() # 输出模型的统计摘要 print(lm.summary()) ``` 在这个示例代码中,我们使用了数据集df,其中price是因变量,而area、bedrooms和bathrooms是自变量。我们使用ols函数构建了多元线性回归模型,并使用fit函数拟合了模型。最后,我们使用summary()函数输出了模型的统计摘要,其中包含了各个自变量的系数、标准误差、t值等信息。 这只是一种使用StatsModels库构建多元线性回归模型的方法,还有其他库和方法也可以实现多元线性回归模型,具体方法可以根据实际需求选择。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python 实战多元线性回归模型,附带原理+代码](https://blog.csdn.net/csdnsevenn/article/details/107888173)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值