Linear Regression 吴恩达机器学习实验一(线性回归)

Linear Regression with one variable

实验要求

"""
在这部分练习中,您将使用一个变量实现线性回归,以预测食品卡车的利润。
假设你是一家餐厅特许经营公司的首席执行官,正在考虑在不同的城市开设新的分店。
该连锁店已经在各个城市拥有卡车,您可以从这些城市获得利润和人口数据。

您希望使用此数据来帮助您选择下一个要扩展到的城市。
文件ex1data1.txt包含线性回归问题的数据集。
第一列是一个城市的人口,第二列是该城市食品卡车的利润。利润为负值表示亏损。
"""

代码部分如下

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

加载数据集

data = pd.read_csv('ex1data1.txt',names = ['Population','Profit']) # names参数传递列表,将名字命名在对应列上
data_x = np.array(data['Population'])  # 将数据名为x的列提取
data_y = np.array(data['Profit'])  # 同上
data.head()  # 是指取数据的前n行数据,默认是前5行。

打印了前五行数据
在这里插入图片描述
看看数据分布

data.describe()  # count数据量 mean均值 std标准差 min最小值 max最大值

在这里插入图片描述
绘图观察数据在坐标上的分布。
在这里插入图片描述
目标:利用梯度下降,使代价函数代价最小化,从而使假设函数更好地拟合数据,完成线性回归从而作出新的预测。

下面是代价函数:
J(θ)=12m∑i=1m(hθ(x(i))−y(i))2J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{ { {\left( { {h}_{\theta }}\left( { {x}^{(i)}} \right)-{ {y}^{(i)}} \right)}^{2}}}J(θ)=2m1i=1m(hθ(x(i))y(i))2

# 代价函数
def computeCost(X,y,theta):
    inner = np.dot(X,theta.T)
    result = np.sum(np.power(inner - y,2))
    return result/( 2 * len(X))

让我们在训练集中添加一列,保存theta0的占位符。
以便我们可以使用向量化的解决方案来计算代价和梯度。
在第0个列上建造一个新列’ones’,插入值1,方便后面计算时theta0的x系数为1.
因为:
h(x)=θ0+θ1xh(x) = \theta_0 + \theta_1 xh(x)=θ0+θ1x

以下两式由梯度下降和代价函数求偏导数后求出。
θ0:=θ0−a1m∑i=1m(hθ(x(i))−y(i)){\theta_{0}}:={\theta_{0}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{ \left({ {h}_{\theta }}({ {x}^{(i)}})-{ {y}^{(i)}} \right)}θ0:=θ0am1i=1m(hθ(x(i))y(i))

θ1:=θ1−a1m∑i=1m((hθ(x(i))−y(i))⋅x(i)){\theta_{1}}:={\theta_{1}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left({ {h}_{\theta }}({ {x}^{(i)}})-{ {y}^{(i)}} \right)\cdot { {x}^{(i)}} \right)}θ1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值