线性回归原理代码实现part1

初始化步骤

导入numpy和预处理需要的utils类

定义linear regression类,传入数据集data、(有监督任务)标签labels、polynomial(多项式)/sinusoid(正弦)_degree是做非线性处理,这里不需要因此令其为0,normalize_data=true是进行预处理操作,将处理好的数据返回给data_processed,同时得到mean值和标准差

接着利用self方便实例调用自己的参数,theta(要求的参数)的个数等于数据集的特征features数量,也就是数据集的列数,初始化theta矩阵(矩阵方法,不用矩阵的话就使用for循环去更新参数(麻烦))

实现梯度下降优化模块

分析公式中需要的值:学习率α,样本个数(这里是10个样本,100个样本就是1/100,以此类推),预测值h,真实值y和数据x,θ是我们要求的

定义train类(学习率alpha,迭代次数iteration)。

定义预测类hypothesis,预测值predictions=data和theta的内积

定义gradient_step类:梯度下降,样本个数numexamples,调用预测类求得预测值,误差delta(预测值-真实值),更新theta值为当前的theta,利用公式更新theta(为了使delta和data一一对应,对delta进行转置),最后更新theta

损失与预测模块

定义梯度下降类gradient_descent,传入学习率alpha和迭代次数iteration。定义损失函数的列表cost_history以便于观察损失值的变化情况。定义损失函数cost_function,传入data和labels,用theta*data-labels就能得到具体的损失值,然后将其加入(append)到损失列表中。

损失值计算函数如下:误差delta,损失值(cost)为1/2的delta平方除以样本个数(防止样本越多,损失值越大)

最后完善train类,就得到了theta值和损失函数列表

以上是训练集的方法,测试集处理顺序相同,如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值