讲解
1.最小二乘法讲解 Least squares
最小二乘法是为了减少损失,而不是用来确定预测是否准确的啊
我们通过下面的例子来分析最小二乘法的应用
模拟的数据
通过python画出来的图像
import pandas as pd data = pd.read_excel("C:/Users/cznczai/Desktop/test.xlsx") x = data["日均人流量(千人)"].values.reshape(-1,1) #对数据进行格式修改 y = data["日均销售收入(千元)"].values.reshape(-1,1) import matplotlib.pyplot as plt # 作图 plt.rcParams['font.sans-serif']='SimHei' plt.scatter(x,y) plt.xlabel("日均人流量(千人)") plt.ylabel("日均销售收入(千元)") plt.plot(x,x*15+5)
求解线性回归方法一 点跟目标直线做垂直线 求解垂直距离 【不推荐 计算极其复杂】
求解线性回归方法二 点做垂直与x轴相交于目标直线于一点p,求p到点的距离 点点距离,x不变y相减
在求解过程中使用最小二乘法
步骤如下:
平方的意义就是将一次转化为二次,将所有的点相加后我们就可以用一元二次来求最小值,从而得到曲线的斜率
正如:ax+c = y ==> a^2 * x^2 + 2axc = y^2
代码
from sklearn import linear_model reg = linear_model.LinearRegression() model = reg.fit(x,y) c = model.intercept_ #y轴截距 k = model.coef_ # w 是一个列表 plt.plot(x,k*x+c)
预测效果
我们预测后的结果只能说是两个因素存在相关性,而不能说两者是决定性关系
- 我们可以通过sklearn库来生成一些数据
from sklearn import datasets import matplotlib.pyplot as plt import numpy as np x,y = datasets.make_regression(n_samples=250,n_features=1,noise=15,random_state=0,bias=5) plt.scatter(x,y,alpha=0.5) plt.show()
对预测模型进行评价
from sklearn.metrics import mean_squared_error,r2_score prediction = model.predict(x) #MSE的值 MSE = mean_squared_error(y,prediction) print('mse: ',MSE) #RMSE RMSE = np.sqrt(MSE) print('rmse: ',RMSE) #r2 r2 = r2_score(y,prediction) print('r2: ',r2)`
2.白板推导 参考资料中的视频
推导并插入注解
w表示每个属性对y值的贡献度
举例运用
3. 注意事项
- 数据取值需要注意的地方, 例如房价,可以加一个固定值的属性,这样可以避免房价为0。(市区 楼层 ... 固定值)
4. 训练时交叉验证
按照线性模型我们都将所有数据都拿出来拟合了,但是这种做法在针对其他模型的拟合时,效果不是很好。
交叉验证就是在所有已知数据中,我们拿出一部分来调参拟合,另一部分数据用来测试拟合效果是否合适。
大部分都是7.5:2.5划分
多项式拟合
1. 泰勒公式
- 拟合函数与目标函数各阶导数都是同一个
用多项式近似代替其他函数