数据挖掘与机器学习 线性回归设计 实训1
数据挖掘与机器学习 线性回归设计 实训1
(1)实训目的
1.掌握回归的基本思想;
2.掌握梯度法的基本原理 。
(2)主要内容
1.实现一元线性回归;
2.画出散点图、回归参数与迭代次数的变化曲线;
3.分析不同数据变化对回归结果的影响。
(3)具体处理步骤
1. 导入数据集,绘制数据的散点图
1  | import numpy as np  | 

1  | data.shape # 原数据集形状,n行m列  | 
(97, 2)
2. 对特征进行归一化处理
1  | def featureNormalize(x): # (特征值x的取值差别较大)需消除特征值的量纲  | 
3.1 定义损失函数 h_theta是预测函数(假设函数),j_theta是损失函数
1  | def computeCost(x, y, theta): # 损失函数j_theta  | 
3.2 梯度下降算法
利用公式 theta : 是预测函数每项的系数,times:梯度下降次数,alpha:梯度下降参数变化率
1  | def gradientDescent(x, y, theta, times, alpha):  | 
4. 计算求得的直线
1  | x_orgin=x # 分别取x,y这列的值  | 

1  | print('预测函数: y = %f + %f * x' % (theta[0], theta[1]))  | 
预测函数: y = 5.825092 + 5.884855 * x
x=3, y = 23.479657
5. 画损失函数,损失随迭代次数变化的曲线
1  | x_times = np.linspace(1,times,times)  | 

6. 结果分析
分析可知,当迭代次数到200次左右时,损失函数趋于收敛损失值达到最小值,迭代次数太多,可能使得出现过拟合现象
alpha 越小时,即步长越小,使得训练过程中的变化速度较慢,但可能更易于损失函数收敛
(4)参考资料
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AriesfunのBlog!
 评论




