当前位置: 首页 > news >正文

茶叶网站建设策划书网站加载效果怎么做的

茶叶网站建设策划书,网站加载效果怎么做的,阿里万网站建设,做网站优化价格目录鸢尾花数据集逻辑回归原理【1】从线性回归到广义线性回归【2】逻辑回归【3】损失函数【4】总结TensorFlow实现一元逻辑回归多分类问题原理独热编码多分类的模型参数损失函数CCETensorFlow实现多分类问题独热编码计算准确率计算交叉熵损失函数使用花瓣长度、花瓣宽度将三种鸢… 目录鸢尾花数据集逻辑回归原理【1】从线性回归到广义线性回归【2】逻辑回归【3】损失函数【4】总结TensorFlow实现一元逻辑回归多分类问题原理独热编码多分类的模型参数损失函数CCETensorFlow实现多分类问题独热编码计算准确率计算交叉熵损失函数使用花瓣长度、花瓣宽度将三种鸢尾花区分开总结鸢尾花数据集 150个样本 4个属性 花萼长度(Sepal Length) 花萼宽度(Sepal Width) 花瓣长度(Petal Length) 花瓣宽度(Petal Width) 1个标签山鸢尾(Setosa)、变色鸢尾(Versicolour)、维吉尼亚鸢尾(Virginica) 逻辑回归原理 【1】从线性回归到广义线性回归 广义线性回归通过联系函数对线性模型的结果进行一次非线性变换使他能够描述更加复杂的关系。 【2】逻辑回归 阶跃函数不是一个单调可微的函数、可以使用对数几率函数替代 sigmoid函数将-无穷无穷的输入转化到0,1 【3】损失函数 线性回归的处理值是连续值不适合处理分类任务 用sigmoid函数将线性回归的返回值映射到(0,1)之间的概率值然后设定阈值实现分类 sigmoid函数大部分比较平缓导数值较小这导致了参数迭代更新缓慢 在线性回归中平方损失函数是一个凸函数只有一个极小值点 但是在逻辑回归中它的平方损失函数是一个非凸函数有许多局部极小值点使用梯度下降法可能得到的知识局部极小值 所以在逻辑回归中一般使用交叉熵损失函数联系统计学中的极大似然估计 注意式子 标签分别等于1,0时的损失函数曲线 损失函数的性质1、非负性保证不同性质的样本误差不会相互抵消2、一致性函数的值应该与误差的变化趋势一致。 这两点交叉熵损失函数都能保证并且此函数还有很大的优势无需对sigmoid函数求导 可以有效解决平方损失函数参数更新过慢的问题偏导数的值只受到预测值与真实值之间误差的影响 并且它还是个凸函数所以使用梯度下降法得到的最小值就是全局最小值 【4】总结 TensorFlow实现一元逻辑回归 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt xnp.array([137.97,104.50,100.00,126.32,79.20,99.00,124.00,114.00,106.69,140.05,53.75,46.91,68.00,63.02,81.26,86.21]) ynp.array([1,1,0,1,0,1,1,0,0,1,0,0,0,0,0,0]) #plt.scatter(x,y) #中心化操作使得中心点为0 x_trainx-np.mean(x) y_trainy plt.scatter(x_train,y_train) #设置超参数 learn_rate0.005 #迭代次数 iter5 #每10次迭代显示一下效果 display_step1 #设置模型参数初始值 np.random.seed(612) wtf.Variable(np.random.randn()) btf.Variable(np.random.randn()) #观察初始参数模型 x_startrange(-80,80) y_start1/(1tf.exp(-(w*x_startb))) plt.plot(x_start,y_start,colorred,linewidth3) #训练模型 #存放训练集的交叉熵损失、准确率 cross_train[] acc_train[] for i in range(0,iter1):with tf.GradientTape() as tape:#sigmoid函数pred_train1/(1tf.exp(-(w*x_trainb)))#交叉熵损失函数Loss_train-tf.reduce_mean(y_train*tf.math.log(pred_train)(1-y_train)*tf.math.log(1-pred_train))#训练集准确率Accuracy_traintf.reduce_mean(tf.cast(tf.equal(tf.where(pred_train0.5,0,1),y_train),tf.float32))#记录每一次迭代的损失和准确率cross_train.append(Loss_train)acc_train.append(Accuracy_train) #更新参数dL_dw,dL_db tape.gradient(Loss_train,[w,b])w.assign_sub(learn_rate*dL_dw)b.assign_sub(learn_rate*dL_db)#plt.plot(x,pred)if i % display_step0:print(i:%i, Train Loss:%f,Accuracy:%f%(i,cross_train[i],acc_train[i]))y_start1/(1tf.exp(-(w*x_startb)))plt.plot(x_start,y_start)#进行分类并不是测试集测试集是有标签的数据而我们这边没有标签这里是真实场景的应用情况 #商品房面积 x_test[128.15,45.00,141.43,106.27,99.00,53.84,85.36,70.00,162.00,114.60] #根据面积计算概率这里使用训练数据的平均值进行中心化处理 pred_test1/(1tf.exp(-(w*(x_test-np.mean(x))b))) #根据概率进行分类 y_testtf.where(pred_test0.5,0,1) #打印数据 for i in range(len(x_test)):print(x_test[i],\t,pred_test[i].numpy(),\t,y_test[i].numpy(),\t) #可视化输出 plt.figure() plt.scatter(x_test,y_test) x_np.array(range(-80,80)) y_1/(1tf.exp(-(w*x_b))) plt.plot(x_np.mean(x),y_) plt.show()训练误差以及准确率损失函数迭代 新样本测试模型 多元逻辑回归则是用多个特征变量去解决二分类问题这里就不做详细展开。 多分类问题原理 独热编码 多分类的模型参数 二分类问题模型输出的是一个连续的函数。 多分类问题模型输出的是概率。 二分类的模型参数是一个列向量W(n1行) 多分类的模型参数是一个矩阵W(n1行n1列) 这里使用softmax回归(而不是对数几率函数)。 softmax回归适用于样本的标签互斥的情况。比如样本的标签为房子小车和自行车这三类之间是没有关系的。样本只能是属于其中一个标签。 逻辑回归使用于样本的标签有重叠的情况。比如外套大衣和毛衣一件衣服可以即属于大衣由属于外套。这个时候就需要三个独立的逻辑回归模型。 关于理论的讲解可以转到下面链接 softmax回归 吴恩达机器学习 损失函数CCE 举个例子 TensorFlow实现多分类问题 逻辑回归只能解决二分类问题 独热编码 a[0,2,3,5] #独热编码 #one_hot(一维数组/张量,编码深度) btf.one_hot(a,6) print(b)效果 tf.Tensor( [[1. 0. 0. 0. 0. 0.][0. 0. 1. 0. 0. 0.][0. 0. 0. 1. 0. 0.][0. 0. 0. 0. 0. 1.]], shape(4, 6), dtypefloat32)计算准确率 步骤 导入预测值 导入标记 将标记独热编码 获取预测值中的最大数索引 判断预测值是否与样本标记是否相同 上个步骤判断结果的将布尔值转化为数字 计算准确率 #准确率#预测值 prednp.array([[0.1,0.2,0.7],[0.1,0.7,0.2],[0.3,0.4,0.3]]) #标记 ynp.array([2,1,0]) #标记独热编码 y_onehotnp.array([[0,0,1],[0,1,0],[1,0,0]])#预测值中的最大数索引 print(tf.argmax(pred,axis1)) #判断预测值是否与样本标记是否相同 print(tf.equal(tf.argmax(pred,axis1),y)) #将布尔值转化为数字 print(tf.cast(tf.equal(tf.argmax(pred,axis1),y),tf.float32)) #计算准确率 print(tf.reduce_mean(tf.cast(tf.equal(tf.argmax(pred,axis1),y),tf.float32)))结果 tf.Tensor([2 1 1], shape(3,), dtypeint64) tf.Tensor([ True True False], shape(3,), dtypebool) tf.Tensor([1. 1. 0.], shape(3,), dtypefloat32) tf.Tensor(0.6666667, shape(), dtypefloat32)计算交叉熵损失函数 #交叉损失函数 #计算样本交叉熵 print(-y_onehot*tf.math.log(pred)) #计算所有样本交叉熵之和 print(-tf.reduce_sum(-y_onehot*tf.math.log(pred))) #计算平均交叉熵损失 print(-tf.reduce_sum(-y_onehot*tf.math.log(pred))/len(pred))效果 tf.Tensor( [[-0. -0. 0.35667494][-0. 0.35667494 -0. ][ 1.2039728 -0. -0. ]], shape(3, 3), dtypefloat64) tf.Tensor(-1.917322692203401, shape(), dtypefloat64) tf.Tensor(-0.6391075640678003, shape(), dtypefloat64)使用花瓣长度、花瓣宽度将三种鸢尾花区分开 import tensorflow as tf import pandas as pd import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt #加载数据 #下载鸢尾花数据集iris #训练数据集 120条数据 #测试数据集 30条数据 import tensorflow as tf TRAIN_URL http://download.tensorflow.org/data/iris_training.csv train_path tf.keras.utils.get_file(TRAIN_URL.split(/)[-1],TRAIN_URL)df_iris_train pd.read_csv(train_path,header0) #处理数据 iris_train np.array(df_iris_train) #观察形状 print(iris_train.shape) #提取花瓣长度、花瓣宽度属性 x_trainiris_train[:,2:4] #提取花瓣标签 y_trainiris_train[:,4] print(x_train.shape,y_train) num_trainlen(x_train) x0_train np.ones(num_train).reshape(-1,1) X_train tf.cast(tf.concat([x0_train,x_train],axis1),tf.float32) Y_train tf.one_hot(tf.constant(y_train,dtypetf.int32),3)print(X_train.shape,Y_train)#设置超参数、设置模型参数初始值 learn_rate0.2 #迭代次数 iter500 #每10次迭代显示一下效果 display_step100 np.random.seed(612) Wtf.Variable(np.random.randn(3,3),dtypetf.float32) #训练模型 #存放训练集准确率、交叉熵损失 acc[] cce[] for i in range(0,iter1):with tf.GradientTape() as tape:PRED_traintf.nn.softmax(tf.matmul(X_train,W))#计算CCELoss_train-tf.reduce_sum(Y_train*tf.math.log(PRED_train))/num_train#计算啊准确度accuracytf.reduce_mean(tf.cast(tf.equal(tf.argmax(PRED_train.numpy(),axis1),y_train),tf.float32))acc.append(accuracy)cce.append(Loss_train)#更新参数dL_dW tape.gradient(Loss_train,W)W.assign_sub(learn_rate*dL_dW)#plt.plot(x,pred)if i % display_step0:print(i:%i, Acc:%f,CCE:%f%(i,acc[i],cce[i]))#观察训练结果 print(PRED_train.shape) #相加之后概率和应该为1 print(tf.reduce_sum(PRED_train,axis1)) #转换为自然顺序编码 print(tf.argmax(PRED_train.numpy(),axis1))#绘制分类图 #设置图的大小 M500 x1_min,x2_min x_train.min(axis0) x1_max,x2_max x_train.max(axis0) #在闭区间[min,max]生成M个间隔相同的数字 t1 np.linspace(x1_min,x1_max,M) t2 np.linspace(x2_min,x2_max,M) m1,m2 np.meshgrid(t1,t2)m0np.ones(M*M) #堆叠数组S X_ tf.cast(np.stack((m0,m1.reshape(-1),m2.reshape(-1)),axis1),tf.float32) Y_ tf.nn.softmax(tf.matmul(X_,W)) #转换为自然顺序编码决定网格颜色 Y_ tf.argmax(Y_.numpy(),axis1) ntf.reshape(Y_,m1.shape) plt.figure(figsize(8,6)) cm_bg mpl.colors.ListedColormap([#A0FFA0,#FFA0A0,#A0A0FF]) plt.pcolormesh(m1,m2,n,cmapcm_bg) plt.scatter(x_train[:,0],x_train[:,1],cy_train,cmapbrg) plt.show() 效果 总结 对多分类问题的数据的划分与处理与之前有所不同。 多分类问题所用到的softmax的意义也许再多回顾。 交叉熵损失函数与极大似然估计的关联也需要再看看。
http://www.sadfv.cn/news/60218/

相关文章:

  • 广州seo网站开发帝国cms电影网站模板
  • 怎么做彩票网站代理学而思的网站哪里做的
  • 辽宁省住房和城乡建设厅官方网站公司起名字
  • wordpress怎么关注站点百度网站快速优化
  • 永州公司网站建设手机版scratch下载
  • 古镇网站建设公司wordpress个人支付插件
  • 清新区城乡建设局网站微信代运营合同模板
  • 康定网站建设公司北京好的建站团队
  • 北京网站设计公司jq成都柚米科技15网站引导制作
  • 药店网站模板自助网站免费注册
  • 现在做网站怎么样北京社保网上服务平台
  • 彩票网站做代理网站建设去哪
  • 网站seo优化有哪些方面做网站的时候用的什么框架
  • 广东seo网站优化公司封面上的网站怎么做的
  • dw网站怎么做跳转免费网页在线代理服务器
  • 山南网站建设广州做网站 汉狮网络
  • 珠宝类网站模板服务器 多wordpress
  • wordpress js 插件开发东莞网站建设分享seo
  • 智能建网站用什么网站做pathway分析
  • 重庆市做网站的公司有哪些网站建设服务代理商
  • 企业手机网站建设行情seo关键字怎么优化
  • 网站备案时 首页网站域名可以做端口映射吗
  • 网站首页制作的过程可以建网站的公司
  • 餐馆网站模板淘宝联盟的网站怎么做
  • 网站流量如何提高沈阳网页设计培训
  • 广东省网站集约化建设方案哪些网站做任务可以赚钱
  • 义乌网图科技有限公司怎么样网站优化怎样做
  • 如何查询网站快照河北网站建设工程
  • 网站开发 图标微信app下载安装官方版2022网址
  • 国内公司网站需要备案吗网页制作公司北京