python与人工智能:线性回归和逻辑回归

news/2024/4/27 14:59:10/文章来源:https://blog.csdn.net/m0_70983574/article/details/127247677

 线性回归

  线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用 十分广泛。
        

 梯度下降?

梯度下降法的基本思想可以类比为一个下山的过程。 假设这样一个场景:一个人被困在山上,需要从山上下来(例如: 找到山的最低点,也就是山谷)。但此时山上的浓雾 很大,导致可视度很低。因此,下山的路径就无法确定,他必须利用自己周围的信息去找到下山的路径。 这个时候,他就可以利用梯度下降算法来帮助自己下山。具体来说就是,以他当前的所处的位置为基准,寻找这个位 置最陡峭的地方,然后朝着山的高度下降的地方走,然后每走一段距离,都反复采用同一个方法,最后就能成功的抵达山谷

转换成计算机理解:
就是让计算机不断猜最小值的那个点自变量x在哪,猜大了让它小一点,猜小了让它大一点,也许猜个几万次就猜中了。 怎么猜的根据梯度猜的。梯度是啥,导数。怎么根据导数猜的?高中老师教过当前这个点导数大于0证明它周围单调增, 最小值点肯定比当前猜的这个点小,那我下次就猜小一点(因为我想找最小值点在哪)
我们同时可以假设这座山最陡峭的地方是无法通过肉眼立马观察出来的,而是需要一个复杂的工具来测量,同时,这 个人此时正好拥有测量出最陡峭方向的能力。所以,此人每走一段距离,都需要一段时间来测量所在位置最陡峭的方 向,这是比较耗时的。那么为了在太阳下山之前到达山底,就要尽可能的减少测量方向的次数。这是一个两难的选择, 如果测量的频繁,可以保证下山的方向是绝对正确的,但又非常耗时,如果测量的过少,又有偏离轨道的风险。所以 需要找到一个合适的测量方向的频率(学习率或者步长),来确保下山的方向不错误,同时又不至于耗时太多!

 下面我们用代码来演示一下:首先我们需要手动建立一个模型,并得到我们的数据集,然后用sklean框架中的线性回归方法,对这些数据进行学习训练得到一个假模型

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegressiondef load_data():# 先假设模型的 k=0.85 b=15x = np.random.uniform(0, 90, (200, 1))y = 0.9*x + 15# 将x, y在假模型直线附近呈正态分布x = np.random.normal(x, 6)y = np.random.normal(y, 6)return x, ydef drawScatter(xx, yy):plt.scatter(xx, yy, c='b')plt.show()if __name__ == "__main__":# 获得数据集x, y = load_data()x_test = np.array([[40, ]])# 创建线性回归对象linear = LinearRegression()# 学习训练,得到模型linear.fit(x, y)# 根据模型预测y坐标y_pre = linear.predict(x_test)# coef_:保存模型的k值,intercept:保存模型的b值print("k:{} b:{}".format(linear.coef_, linear.intercept_))print("预测:", y_pre)print("真实:", 0.9*x_test+15)# 画出真实点和预测点plt.scatter(x_test, y_pre, c='y', marker="*")plt.scatter(x_test, 0.9*x_test+15, c='g', marker='s')plt.plot(x_test, linear.coef_ * x_test + linear.intercept_, c='r')drawScatter(x, y)

逻辑回归

        逻辑回归虽然被称为回归,但一般被用来处理二分类问题,它是将样本的特征和样本发生的概率联系起来,是一种监督学习的方法。
    """
        线性回归中,模型,y=kx+b
        逻辑回归中,k值有多个,b值有多个,那么模型为fx=k0*xx+k1*yy+b
        那么当fx=0时,概率为0.5表示当前(x,y)刚好在两个阵营的中间
        fx>0,表示1阵营,fx<0 表示为0阵营

    """
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
def load_data():xx = np.array([[0.1, 1.1],[0.25, 0.5],[0.28, 1.0],[0.48, 1.6],[0.85, 1.49],[0.91, 0.1],[1.2, 1.3],[1.5, 2.8],[2.0, 1.8],[1.2, 2.4],[0.3, 2.7],[0.5, 2.2],[0.5, 3],[0.9, 2.9],[1.43, 3.7],[1.6, 2.6],[1.7, 1.1],[1.9, 3.8],[2.1, 2.6],[2.28, 3.6],[2.38, 1.4],])yy = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])return xx, yy
def draw(xx, yy):plt.scatter(xx[:10, 0], xx[:10, 1], c='r', marker="^")plt.scatter(xx[10:, 0], xx[10:, 1], c='b', marker="*")plt.show()if __name__ == "__main__":x, y = load_data()logistic = LogisticRegression()logistic.fit(x, y)print("k:{},b:{}".format(logistic.coef_, logistic.intercept_))# 画出回归线k1 = logistic.coef_[0, 0]k2 = logistic.coef_[0, 1]b = logistic.intercept_xx = np.arange(0, 2.5, 0.05)yy = (0 - b - k1*xx)/k2plt.scatter(xx, yy, c='g')x_test = np.array([[1.25, 2.0]])pre = logistic.predict(x_test)print(pre)plt.scatter(x_test[0, 0], x_test[0, 1], c='y', marker="s")draw(x, y)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_398855.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零拷贝总结

数据交互模式 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dqLJVb5U-1665401648551)(en-resource://database/1074:1)] 读数据过程&#xff1a; 应用程序要读取磁盘数据&#xff0c;调用 read()函数从而实现用户态切换内核态&#xff0c;这是第 …

论文/机器学习笔记:SENet (Squeeze-and-Excitation Networks)

Image 2017 挑战赛夺冠paper 1 motivation 希望显式地建模特征通道&#xff08;channel&#xff09;之间的相互依赖关系 通过学习的方式来自动获取到每个特征通道的重要程度依照这个重要程度去提升有用的特征并抑制对当前任务用处不大的特征 2 模型 给定一个输入 x&#xff…

利用phpstudy导入mysql文件

1.创建mysql文件 mysql 常用命令&#xff1a; 打开mysql: mysql -u root -p 查看数据库&#xff1a; show databases; 创建 数据库: create database baseName (数据库名称) 使用数据库&#xff1a; use baseName(数据库名称) 显示表&#xff1a;show tables; 创建表&#xff…

C#【高级篇】 IntPtr是什么?怎么用?

C#学习汇总 - 总目录 C#【高级篇】 IntPtr是什么&#xff1f;怎么用&#xff1f;前言一、IntPtr&#xff08;IntPointer&#xff09;的由来二、IntPtr&#xff08;属于结构体&#xff09;的说明三、IntPtr的使用示例1、int类型与IntPtr类型之间的转换2、string类型与IntPtr之间…

Java collection集合的体系特点

Java collection集合的体系特点 集合类体系结构 collection单列集合&#xff0c;每个元素&#xff08;数据&#xff09;只包含一个值。 Map双列集合&#xff0c;每个元素包含两个值&#xff08;键值对&#xff09;。 collection集合体系&#xff08;常见&#xff09; colle…

位段是什么玩意?你听说过吗??

当我们学完结构体之后&#xff0c;我们就要好好学学结构体实现位段的能力&#xff01;&#xff01;&#xff01; 目录 一、位段是什么&#xff1f; 二、位段的内存分配 三、位段的跨平台问题 总结 一、位段是什么&#xff1f; 位段的声明和结构体大体相同&#xff0c;但是有两…

【Unity_AssetBundle】(二)AB包资源打包、Asset Bundle Browser工具的使用

1.Asset Bundle Browser包安装 Asset Bundle Browser是AB包打包工具较底版本Unity编辑器&#xff1a; Windows——>Package Mannger——>搜索Asset Bundle Browser进行下载导入即可 较高版本Unity编辑器&#xff1a; 高版本Unity在Addressables功能中封装了AB包功能 安…

Telnet、DHCP、静态路由、等价路由、环回接口、浮动静态路由详解

文章目录前言一、Telnet二、DHCP----动态主机配置协议手工配置缺陷报文类型DHCP租期地址池DHCP中继代理路由信息来源直连路由静态路由优先级数据流量是双向的静态路由的扩展配置等价路由环回接口手工汇总路由黑洞缺省路由空接口路由浮动静态路由前言 一、Telnet Telnet是位于…

【数据结构】 归并排序、 基数排序

目录 一、什么是归并排序&#xff1f; 二、归并排序 三、什么是基数排序&#xff1f; 四、基数排序 五、各种排序的比较 一、什么是归并排序&#xff1f; 归并排序是建立在归并操作上的一种有效&#xff0c;稳定的排序算法。是将已有序的子序列合并&#xff0c;得到完全有…

09-Pawn类 UE4 C++

1.首先创建一个C的Pawn类 右键点击Public&#xff0c;选择新建C类 选择Pawn&#xff0c;然后点击下一步 命名后&#xff0c;点击创建 创建完毕&#xff0c;双击打开MyPawn 2.在MyPawn.h中添加如下代码&#xff1a; UPROPERTY(EditAnywhere) class UStaticMeshComponent* Mes…

SpringCloud-31-Spring Cloud Config微服务与配置文件解耦

11.8 微服务与配置文件解耦 我们可以将之前的子模块中的配置提取出来&#xff0c;托管到gitee上统一管理&#xff0c;这样运维人员维护配置文件就不变动子模块了&#xff0c;实现了模块与配置的解耦。 下面用例子来解释下这种做法的好处 在基础工程spring-cloud-microservice…

热血江湖服务端架设开服搭建教程

热血江湖服务端架设开服搭建教程 玩网游比较多的小伙伴&#xff0c;相信对热血江湖这款游戏也不陌生&#xff0c;摆脱了传统武侠游戏阴暗血腥的游戏风格&#xff0c;提倡一种“明朗而愉快的武侠”精神。画面上即不会太随意又不会过于沉重&#xff0c;画面干净清新。活泼可爱的…

ORACLE新增数据库(用户),使用navicate

oracle新增数据库并不像mysql直接指令就行&#xff0c;百度一圈都是用Oracle Database Configuration Assistant的&#xff0c;其实navicate就直接可以新建&#xff0c;以下是新建方法&#xff1a; 1.连接数据库 2.新建表空间 点击navicate上方工具栏中"其它"&…

何为功能平价?特斯拉「抛弃」多传感融合,背后有哪些门道

技术与成本&#xff0c;永远是博弈的两方。 当大部分车企都在寻求通过增加更多、更高性能的传感器&#xff08;也就是通常所说的多传感融合技术&#xff09;来强化智能驾驶功能可靠性和拓展性的大背景下&#xff0c;特斯拉依然我行我素&#xff0c;继续沿着纯视觉感知的路线前…

盘点一个Python列表(元素多样)处理的实战题目(使用正则表达式也可以实现)

大家好,我是Python进阶者。 一、前言 前几天在Python白银交流群【凡人不烦人】问了一个Python列表处理的问题,提问截图如下:下面是他的部分数据: lst = [(问答题)(2) 假设镀锌钢管, http://admintk.sc.zzstep.com/UpLoadImage/2019-10-10/a84f340e-6c67-42b1-8eae-3dc14281…

队列的操作实验(数据结构)

队列的操作实验&#xff08;数据结构&#xff09; 一、实验目的 1&#xff0e;掌握队列存储结构的表示和实现方法。 2&#xff0e;掌握队列的入队和出队等基本操作的算法实现。 3&#xff0e;了解队列在解决实际问题中的简单应用。 二、实验内容 1&#xff0e;建立顺序循环队列…

【LeetCode】【二叉搜索树迭代器】

173. 二叉搜索树迭代器 实现一个二叉搜索树迭代器类BSTIterator &#xff0c;表示一个按中序遍历二叉搜索树&#xff08;BST&#xff09;的迭代器&#xff1a; BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指…

【优化充电】基于matlab粒子群算法电动汽车充电动态优化策略【含Matlab源码 2163期】

一、粒子群算法电动汽车充电优化 1 电动汽车充电负荷估算 电动汽车的充电负荷主要与电动汽车起始充电时刻和充电时长相关,而起始充电时刻是由电动汽车用户的到家时间决定的,充电时长主要与电动汽车的行驶里程和充电倍率相关。 目前电动汽车还没有大规模运营, 只能通过统计燃油…

ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis

ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis 目录 ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis 项目创建 StackExchange.Redis操作示例 引包【using StackExchange.Redis;】 ConnectionMultiplexer RedisDBHelper …

Git学习总结

目录&#xff1a; &#xff08;1&#xff09;版本控制 &#xff08;2&#xff09;Git和SVN的区别 &#xff08;3&#xff09;Git历史 &#xff08;4&#xff09;安装Git及环境配置 &#xff08;5&#xff09;常用的Linux命令 &#xff08;6&#xff09;Git的必要配置 &a…