实验目的:
实验内容:
1.预测鲍鱼的年龄。
此案例所用数据来自UCI数据集,记录鲍鱼的一些相关属性,请根据这些属性构建一个模型来预测鲍鱼的年龄。
基本要求:
1、根据 '性别','长度','直径','高度','整体重量','肉重量','内脏重量','壳重'。对鲍鱼年龄进行预测。构建线性回归模型。
2、使用最小二乘法计算参数
3、使用梯度下降的方式计算参数
2.将香蕉进行分类。
此案例所用数据来自KEEL数据集,记录香蕉的一些相关属性,请根据这些属性构建一个模型将香蕉进行分类。
基本要求:
1、根据提供的数据集,对将香蕉进行分类。构建逻辑回归模型。
2、使用梯度下降的方式计算参数
实验报告要求:
简单描述实验步骤,详细写明程序代码与操作结果。
实验代码:
1.1最小二乘法
步骤注释:2.导入numpy包
3.设置矩阵全部输出,默认会输出一部分
5.加载abalone.txt文件此时data为一个矩阵
6.加一列全为1的数据 来当做系数b y=kx+b
7.截取data中的第10列数据作为y
8. 截取data中的前9列数据作为x
如上图所示公示中,python代码中np.linalg.inv则为矩阵的逆矩阵,np.dot则为矩阵的相乘,transpose()则为矩阵的转置。实际则为图上的公式
11.则为W*x得到相应的y的预测值
1.2梯度下降法:
首先公式推导梯度:
步骤注释:
41-45:与前面一致,首先加一列全为1的数据(相当于b),然后划分成input(相当于x)和real(相当于y)
46:这个将其设置成迭代200次
47:计算出out(预测值y)
48-49:每次迭代输出预测值
50-51:这里首先计算出第一项的数据,因为样本数据一共有4177个数据,需要写一个for循环累加其中的(真实值-预测值)*x的和,所以需要在外边先设置一个全局变量delta
54:循环4177次,
57-58:环累加其中的(真实值-预测值)*x + delta (此处用到了50-51)
60:设置delat为负数,表示为梯度下降 ,而不是上升
61:这里设置步长为0.0001
64-65:最终则输出为最佳权重
2.预测香蕉
本题梯度下降梯度求解的方法与第一题一样。
这里引入了Sigmoid函数,
思路:将求得一个w 然后预测y,然后将y作为自变量带入Singmoid函数中,得到相应的函数值,预测值大于0.5且真实值大于0.5或者预测值小于0.5且真实值小于0.5,则视为预测正确,最终统计预测正确的个数得到sum。实验结果如下。
实验结果:
1.1最小二乘法:
由于测试集共有4166条数据,前面的不好截取,所以截取最后几十条数据进行对比,可以看到数据拟合度也是很高的。
1.1梯度下降法:
同样是截取最后的数据可以看到在1000次迭代后,预测值与输出值基本相拟合
2.香蕉的预测:
实验反思或感想:
梯度下降是迭代法的一种,可用于求解最小二乘法问题,线性非线性都可以。在求解机器学习模型参数时,即无约束最优化问题时,最常用的就是梯度下降,另一种方法就是最小二乘法。在求损失函数的最小值问题时,可使用梯度下降法一步步迭代得到损失函数的最小值和参数值;如果求损失函数的最大值就要用梯度上升法,所谓梯度下降,最终实际上都是求解函数最值问题,从而求得最理想的参数。