源码分析来源:datawhalechina
https://github.com/datawhalechina/machine-learning-toy-code/blob/main/ml-with-sklearn/LinearRegression/LinearRegression.ipynb
一、线性回归语法备注补充及重点:
1.* np.random.seed(0):每次运行代码时设置相同的seed,则每次生成的随机数也相同,如果不设置seed,则每次生成的随机数都会不一样。
https://zhuanlan.zhihu.com/p/32857565;https://zhuanlan.zhihu.com/p/266472620
2.* np.sort:排序
3. * np.random.rand(数量):随机样本在 [0,1) 范围中取值。https://blog.csdn.net/qq_40130759/article/details/79535575
注:与np.random.randn(数量)使用方法相同,(0,1)的正态分布
4. *np.linspace(0, 1, 100):序列生成器(均匀步长生成数字序列),即numpy.linspace(start, end, num=num_points)。这里的意思是生成0-1的100个length的序列。https://m.w3cschool.cn/article/54960412.html
5. *np.newaxis:增加一个维度。将一维的数据转变成一个矩阵,为了与权重矩阵进行相乘。https://blog.csdn.net/weixin_42866962/article/details/82811082
二、多项式回归语法备注补充及重点:
1. * np.cos:三角函数. e.g. np.cos(a*np.pi/180) # 通过乘 pi/180 转化为弧度
2. * plt.figure(figsize=(14,5)):表示figure 的大小为宽、长(单位为inch)
3. * plt.subplot(2,2,1):也可以简写plt.subplot(221)表示生成一个共2*2(共4张)的图阵列,“1”代表第一行第一列第一个图。https://www.jianshu.com/p/de223a79217a
4. * plt.setp(ax, xticks=(), yticks=()):图的显示模式。
5. * # 使用交叉验证:scores=cross_val_score(pipeline,X[:,np.newaxis],y,scoring="neg_mean_squared_error",cv=10)
🔺 以上一、二的重要知识点以及疑点:
① 交叉验证:
② 过拟合与欠拟合(图一欠拟合、图三过拟合):
③ pipeline的用法还不太理解:在代码中,用pipeline串联起的这两个模型最终得出的又是什么模型呢?
三、逻辑回归语法备注补充及重点 (二分类):
1. 假设函数(Hypothesis function):(我的理解)就是用找到相关的复合函数描述自变量和因变量之间的关系。
如:历史数据近似在一条直线左右,我们假设函数为下图公式,我们需要找到最优的 θ0 和 θ1 来使这条直线更能准确地代表所有数据。
2. 损失函数(loss function)-代价函数:用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。损失函数类型若干,如0-1损失函数,绝对损失函数,log对数损失函数,指数损失函数等(具体详见https://zhuanlan.zhihu.com/p/58883095)。
3. 梯度下降(哎哟天呐,这部分算法太难了,只能理解意思,完全无法明白公式推算):
用来计算函数最小值。想象在山顶放了一个球,一松手他就会顺着山坡最陡峭的地方滚到谷底。
* 说白了就是找最优解