import numpy as np
from numpy.linalg import inv
from numpy import dot
import pandas as pd
dataset = pd.read_csv('data.csv')
temp = dataset.iloc[:, 2:5]
temp['x0'] = 1
X = temp.iloc[:, [3, 0, 1, 2]]
Y = dataset.iloc[:, 1].values.reshape(150, 1)
# 最小二乘法
theta = dot(dot(inv(dot(X.T, X)), X.T), Y)
# 梯度下降
theta = np.array([1., 1., 1., 1.]).reshape(4, 1)
alpha = 0.1
temp = theta
X0 = X.iloc[:, 0].values.reshape(150, 1)
X1 = X.iloc[:, 1].values.reshape(150, 1)
X2 = X.iloc[:, 2].values.reshape(150, 1)
X3 = X.iloc[:, 3].values.reshape(150, 1)
for i in range(10000):
temp[0] = theta[0] + alpha * np.sum((Y - dot(X, theta)) * X0) / 150
temp[1] = theta[1] + alpha * np.sum((Y - dot(X, theta)) * X1) / 150
temp[2] = theta[2] + alpha * np.sum((Y - dot(X, theta)) * X2) / 150
temp[3] = theta[3] + alpha * np.sum((Y - dot(X, theta)) * X3) / 150
theta = temp
print(theta)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于Python实现线性回归的最小二乘法和梯度下降法.zip (3个子文件)
基于Python实现线性回归的最小二乘法和梯度下降法
linear_02.py 901B
data.csv 3KB
linear_01.py 416B
共 3 条
- 1
资源评论
Mopes__
- 粉丝: 1269
- 资源: 374
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功