是wordpress,seo点击排名软件哪里好,wordpress全站cdn,wordpress头部背景文章目录原理以及公式【1】一元线性回归问题【2】多元线性回归问题【3】学习率【4】流程分析#xff08;一元线性回归#xff09;【5】流程分析#xff08;多元线性回归#xff09;归一化原理以及每种归一化适用的场合一元线性回归代码以及可视化结果多元线性回归代码以及可…
文章目录原理以及公式【1】一元线性回归问题【2】多元线性回归问题【3】学习率【4】流程分析一元线性回归【5】流程分析多元线性回归归一化原理以及每种归一化适用的场合一元线性回归代码以及可视化结果多元线性回归代码以及可视化结果总结原理以及公式 【1】一元线性回归问题
原函数是一元函数(关于x)它的损失函数是二元函数(关于w和b)
这里介绍两种损失函数平方损失函数和均方差损失函数
【2】多元线性回归问题
X和W都是m1维的向量损失函数是高维空间中的凸函数
【3】学习率
学习率属于超参数(超参数:在开始学习之前设置不是通过训练得到的) 可以选择在迭代次数增加时减少学习率大小. 下图是学习率正常或较小、稍大、过大的迭代图。
【4】流程分析一元线性回归
过程分析 1、加载样本数据x,y 2、设置超参数学习率迭代次数 3、设置模型参数初值w0 b0 4、训练模型w, b 5、结果可视化 流程图【5】流程分析多元线性回归
归一化原理以及每种归一化适用的场合 线性归一化适用于样本分布均匀且集中的情况如果最大值(或者最小值)不稳定和绝大数样本数据相差较大使用这种方法得到的结果也不稳定.为了抑制这个问题在实际问题中可以用经验值来代替最大值和最小值 标准差归一化适用于样本近似正态分布或者最大最小值未知的情况有时当最大最小值处于孤立点时也可以使用标准差归一化 非线性映射归一化通常用于数据分化较大的情况有的很大有的很小 总结样本属性归一化需要根据属性样本分布规律定制 过程分析 加载样本数据area,room,price 数据处理归一化XY 设置超参数学习率,迭代次数 设置模型参数初值W0(w0,w1,w2) 训练模型W 结果可视化 一元线性回归代码以及可视化结果
#解析法实现一元线性回归
# #Realization of one variable linear regression by analytic method
#导入库
import numpy as np
import matplotlib.pyplot as plt
#设置字体
plt.rcParams[font.sans-serif] [SimHei]
#加载样本数据
xnp.array([137.97,104.50,100.00,124.32,79.20,99.00,124.00,114.00,106.69,138.05,53.75,46.91,68.00,63.02,81.26,86.21])
ynp.array([145.00,110.00,93.00,116.00,65.32,104.00,118.00,91.00,62.00,133.00,51.00,45.00,78.50,69.65,75.69,95.30])
#设置超参数,学习率
learn_rate0.00001
#迭代次数
iter100
#每10次迭代显示一下效果
display_step10
#设置模型参数初值
np.random.seed(612)
wnp.random.randn()
bnp.random.randn()
#训练模型
#存放每次迭代的损失值
mse[]
for i in range(0,iter1):#求偏导dL_dwnp.mean(x*(w*xb-y))dL_dbnp.mean(w*xb-y)#更新模型参数ww-learn_rate*dL_dwbb-learn_rate*dL_db#得到估计值predw*xb#计算损失(均方误差)Lossnp.mean(np.square(y-pred))/2mse.append(Loss)#显示模型#plt.plot(x,pred)if i%display_step0:print(i:%i,Loss:%f,w:%f,b:%f%(i,mse[i],w,b))
#模型和数据可视化
plt.figure(figsize(20,4))
plt.subplot(1,3,1)
#绘制散点图
#张量和数组都可以作为散点函数的输入提供点坐标
plt.scatter(x,y,colorred,label销售记录)
plt.scatter(x,pred,colorblue,label梯度下降法)
plt.plot(x,pred,colorblue)#设置坐标轴的标签文字和字号
plt.xlabel(面积平方米,fontsize14)
plt.xlabel(价格万元,fontsize14)#在左上方显示图例
plt.legend(locupper left)#损失变化可视化
plt.subplot(1,3,2)
plt.plot(mse)
plt.xlabel(迭代次数,fontsize14)
plt.ylabel(损失值,fontsize14)
#估计值与标签值比较可视化
plt.subplot(1,3,3)
plt.plot(y,colorred,markero,label销售记录)
plt.plot(pred,colorblue,markero,label梯度下降法)
plt.legend()
plt.xlabel(sample,fontsize14)
plt.ylabel(price,fontsize14)
#显示整个绘图
plt.show() 多元线性回归代码以及可视化结果
#解析法实现多元线性回归
#Realization of multiple linear regression by analytic method
#导入库与模块
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
#【1】加载样本数据
areanp.array([137.97,104.50,100.00,124.32,79.20,99.00,124.00,114.00,106.69,138.05,53.75,46.91,68.00,63.02,81.26,86.21])
roomnp.array([3,2,2,3,1,2,3,2,2,3,1,1,1,1,2,2])
pricenp.array([145.00,110.00,93.00,116.00,65.32,104.00,118.00,91.00,62.00,133.00,51.00,45.00,78.50,69.65,75.69,95.30])
numlen(area) #样本数量
#【2】数据处理
x0np.ones(num)
#归一化处理这里使用线性归一化
x1(area-area.min())/(area.max()-area.min())
x2(room-room.min())/(room.max()-room.min())
#堆叠属性数组构造属性矩阵
#从(16,)到(16,3),因为新出现的轴是第二个轴所以axis为1
Xnp.stack((x0,x1,x2),axis1)
print(X)
#得到形状为一列的数组
Yprice.reshape(-1,1)
print(Y)
#【3】设置超参数
learn_rate0.001
#迭代次数
iter500
#每10次迭代显示一下效果
display_step50
#【4】设置模型参数初始值
np.random.seed(612)
Wnp.random.randn(3,1)
#【4】训练模型
mse[]
for i in range(0,iter1):#求偏导dL_dWnp.matmul(np.transpose(X),np.matmul(X,W)-Y) #XT(XW-Y)#更新模型参数WW-learn_rate*dL_dW#得到估计值PREDnp.matmul(X,W)#计算损失(均方误差)Lossnp.mean(np.square(Y-PRED))/2mse.append(Loss)#显示模型#plt.plot(x,pred)if i % display_step0:print(i:%i,Loss:%f%(i,mse[i]))
#【5】结果可视化
plt.rcParams[font.sans-serif] [SimHei]
plt.figure(figsize(12,4))
#损失变化可视化
plt.subplot(1,2,1)
plt.plot(mse)
plt.xlabel(迭代次数,fontsize14)
plt.ylabel(损失值,fontsize14)
#估计值与标签值比较可视化
plt.subplot(1,2,2)
PREDPRED.reshape(-1)
plt.plot(price,colorred,markero,label销售记录)
plt.plot(PRED,colorblue,markero,label预测房价)
plt.xlabel(sample,fontsize14)
plt.ylabel(price,fontsize14)
plt.legend()
plt.show()总结
注意点选择归一化方式 喜欢的话点个赞和关注呗