深圳建站推广公司毕业设计网站前端代做
- 作者: 五速梦信息网
- 时间: 2026年04月20日 09:21
当前位置: 首页 > news >正文
深圳建站推广公司,毕业设计网站前端代做,内网门户网站,360建筑网挂行情1. 为什么需要逻辑回归 在前面学习的线性回归中#xff0c;我们的预测值都是任意的连续值#xff0c;例如预测房价。除此之外#xff0c;还有一个常见的问题就是分类问题#xff0c;而逻辑回归是一个解决分类问题的模型#xff0c;其预测值是离散的。 分类问题又包括…1. 为什么需要逻辑回归 在前面学习的线性回归中我们的预测值都是任意的连续值例如预测房价。除此之外还有一个常见的问题就是分类问题而逻辑回归是一个解决分类问题的模型其预测值是离散的。 分类问题又包括二分类问题与多分类问题对于二分类问题来说预测值只可能是\否即1\0, 对于多分类问题来说预测值可能是多个分类中的一个例如我输入的是一些动物的图片我想让模型辨认这些是什么动物我可以设定预测值1代表模型认为输入是一只猫预测值2代表模型认为输入是一只狗预测值3代表模型认为输入是一只猪。
- 二分类逻辑回归 2.1 从线性回归到分类 如果有这样一个场景输入x为肿瘤的大小而需要预测是否是恶性的。接下来我们仍然使用线性回归模型但如果我们这增设这样一个阈值 这样一来所有预测值都将变成1或者0实现了分类的目的 2.2 逻辑回归模型 对于线性回归的模型来说其输出值是任意的常常会远远大于1或者远远小于0仅仅上述的阈值可能并不会起到作用或者效果很差。 对此逻辑回归会先将所有预测值通过sigmoid 函数映射到[0,1]区间函数表达式和图像如下图 z为输入 sigmoid 函数是一个非线性函数当x大于0时输出值大于0.5当x0时输出值小于0.5 最终我们得到逻辑回归的模型如下 作用是对于给定的输入变量通过参数计算输出变量为1的可能性是多少 假如对于一个输入x最终计算出0.7则模型认为有70%的可能其为正向类1相反负向类的可能性就为1-0.70.3 最后在分类时再入加上之前的阈值 所以逻辑回归就是线性回归再嵌套一个非线性的sigmoid函数其本质还是回归 2.4 决策边界Decision Boundary 假如分类这样一些数据‘x’为1圈为0 通过建立逻辑回归模型 假设经过训练我们得到了这样一组参数于是得到嵌套在逻辑回归里的线性回归模型根据逻辑回归的原理当时预测1当时预测0于是分隔情况就是我们可以画出这个直线 这条线便是模型的决策边界 如果是这样的数据 建立逻辑回归模型、 得到参数 同样的原理得到其决策边界是一个圆心在原点半径为1的圆 2.5 损失函数 2.5.1 为什么不用MSE损失函数 根据上述的理论可以知道逻辑回归的和线性回归的本质是一样的。那是不是意味着损失函数也可以用MSE。 在线性回归中损失函数如下 我们将带入可以得到 得到的是一个非凸函数non-convexfunction这会很大程度上影响梯度下降法寻找全局最小值很可能停留在在某个局部极小值 2.5.2 对数损失函数 介于上述问题对于二分类逻辑回归来说使用的是对数损失函数。 对于一个样本来说预测值会有1和0两种情况对应两个损失值 log一般以e为底 当实际y1时如果预测值1此时预测是完全正确的代入上式计算误差为0如果预测值不为1代表模型没有100%的把握认为这是正向类的此时误差会随着的减小而变大。 当实际y0时如果预测值0此时预测是完全正确的代入上式计算误差为0如果预测值不为0代表模型没有100%的把握认为这是负向类的此时误差会随着的增大而变大。 将这两种情况合在一起 再求和取平均得到最终损失函数表达式 采用矩阵的形式表达 2.6 梯度下降 矩阵表达式为 使用梯度下降 矩阵表达式为 3. 多分类逻辑回归 多分类逻辑回归的实现依赖于二分类 将其中一个类标记为正向类然后将其他类都标记为负向类得到一个模型接着选择另外一个类标记为正向类然后将其他类都标记为负向类又得到一个模型以此类推我们可以得到一系列模型假设有k个类 ,i1234……k 训练好这一系列模型后对于一个输入x让其在所有的分类器都得到一个输出最后选择一个max作为最终的输出
- 逻辑回归的实例 ex2data1数据集包含100行数据前两列是学生的两种考试的成绩最后一列是他们被是否录取。需要根据学生的两种考试的成绩来预测他们被是否录取。 1.读取数据集 import numpy as np import pandas as pd import matplotlib.pyplot as pltdata pd.read_csv(ex2data1.txt,names[exam1,exam2,admitted]) data.head() # 根据admitted的值分类 plt.scatter(positive[exam1],positive[exam2],markero,labelAdmitted) plt.scatter(negative[exam1],negative[exam2],markerx,labelNot Admitted) plt.xlabel(Exam1 Score) plt.ylabel(Exam2 Score) plt.legend() plt.show() 2.数据预处理 data.insert(0,ones,1) X data.iloc[:,0:-1].values y data.iloc[:,-1].values y y.reshape(100,1) 3.定义Sigmoid函数 def sigmoid(z):return 1/(1np.exp(-z)) 4.定义损失函数 def lossFunction(X,y,theta):m len(X)h sigmoid(Xtheta)return (1/m)*np.sum(-y.Tnp.log(h)-(1-y).Tnp.log(1-h)) 5.模型训练 def train(X,y,alpha,epochs):loss_history []theta np.random.rand(3,1)for i in range(epochs):m len(X)h sigmoid(Xtheta)theta theta - (alpha/m)*X.T(h-y)current_loss lossFunction(X,y,theta)loss_history.append(current_loss) if (i1) % 100 0:print(epochs{},current_loss{}.format(i1,current_loss))# 绘制损失函数图像plt.plot(range(1,epochs1),loss_history)plt.xlabel(epochs)plt.ylabel(loss)plt.title(Loss Curve)plt.show()return theta# 参数 alpha 0.1 epochs 1000 theta train(X,y,alpha,epochs) admitted X[y.flatten() 1] not_admitted X[y.flatten() 0] plt.scatter(admitted[:, 1], admitted[:, 2], labelAdmitted, markero) plt.scatter(not_admitted[:, 1], not_admitted[:, 2], labelNot Admitted, markerx) plt.xlabel(Exam 1 score) plt.ylabel(Exam 2 score)# 绘制决策边界 plot_x np.array([min(X[:, 1]) - 2, max(X[:, 1]) 2]) plot_y (-1 / theta[2]) * (theta[1] * plot_x theta[0]) plt.plot(plot_x, plot_y, labelDecision Boundary) plt.legend() plt.show()
- 上一篇: 深圳建站企业嘉兴网站平台建设
- 下一篇: 深圳教育 网站建设建设网站技术数据策划书
相关文章
-
深圳建站企业嘉兴网站平台建设
深圳建站企业嘉兴网站平台建设
- 技术栈
- 2026年04月20日
-
深圳建站哪家专业网站良精企业网站系统
深圳建站哪家专业网站良精企业网站系统
- 技术栈
- 2026年04月20日
-
深圳建站公司优化网店设计风格有哪些
深圳建站公司优化网店设计风格有哪些
- 技术栈
- 2026年04月20日
-
深圳教育 网站建设建设网站技术数据策划书
深圳教育 网站建设建设网站技术数据策划书
- 技术栈
- 2026年04月20日
-
深圳开发公司网站建设比较好的中文域名转码网站
深圳开发公司网站建设比较好的中文域名转码网站
- 技术栈
- 2026年04月20日
-
深圳联雅做网站怎么样wordpress发视频教程
深圳联雅做网站怎么样wordpress发视频教程
- 技术栈
- 2026年04月20日
