Lasso 回归
有一组给定的x1,x2和y的值如下表,用lasso回归拟合数据
x1 | 1.1 | 1.4 | 1.7 | 1.7 | 1.8 | 1.8 | 1.9 | 2.0 | 2.3 | 2.4 |
x2 | 1.1 | 1.5 | 1.8 | 1.7 | 1.9 | 1.8 | 1.8 | 2.1 | 2.4 | 2.5 |
y | 16.3 | 16.8 | 19.2 | 18 | 19.5 | 20.9 | 21.1 | 20.9 | 20.3 | 22 |
代码如下:
A | |
1 | [[1.1,1.1],[1.4,1.5],[1.7,1.8],[1.7,1.7],[1.8,1.9],[1.8,1.8],[1.9,1.8],[2.0,2.1],[2.3,2.4],[2.4,2.5]] |
2 | [16.3,16.8,19.2,18,19.5,20.9,21.1,20.9,20.3,22] |
3 | =lasso(A1,A2,0.01,10000) |
4 | =lasso(A1,A3) |
5 | =canvas() |
6 | =A5.plot("NumericAxis","name":"y_pre","autoCalcValueRange":false,"autoRangeFromZero":false,"maxValue":25,"minValue":15,"title":" prediction data ") |
7 | =A5.plot("NumericAxis","name":"y","location":2,"autoCalcValueRange":false,"autoRangeFromZero":false,"maxValue":25,"minValue":15,"title":"observation data","titleAngle":270) |
8 | =A5.plot("Dot","lineWeight":0,"lineColor":-16776961,"markerWeight":1,"axis1":"y_pre","data1":A4.conj(),"axis2":"y","data2": A2) |
9 | =to(15:25) |
10 | =A5.plot("Line","markerStyle":0,"axis1":"y_pre","data1":A9,"axis2":"y", "data2":A9) |
11 | =A5.draw(600,600) |
A1 输入数据x
A2输入数据y
A3用lasso拟合数据,0.01 表示学习率,10000 表示迭代次数,返回模型信息。
A3(1)系数矩阵
A3(2)截距
A4 用A3拟合的模型在A1上进行预测,返回预测结果
A5-A11 画图对比预测值和真实值,评估模型效果。横轴表示每个样本数据的预测值,纵轴表示观测数据真实值。如果所有点都能在对角线附近均匀分布,则方程的拟合值与原值差异很小,方程的拟合效果就好。如效果不理想可通过调节学习率和迭代次数进行优化。
A5生成画布
A6绘制横轴,预测数据
A7绘制纵轴,观测数据真实值
A8绘制点图元,横轴取预测值,纵轴取真实值
A9取[15,25]的固定区间
A10绘制线图元,y=x
A11画图