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

机器学习(三)

机器学习

  • 4.回归和聚类算法
    • 4.1 线性回归
      • 4.1.1 线性回归的原理
      • 4.1.2 线性回归的损失和优化原理
    • 4.2 欠拟合与过拟合
      • 4.2.1 定义
      • 4.2.2 原因以及解决方法
      • 4.2.3 正则化
    • 4.3 线性回归改进-岭回归
      • 4.3.1 带L2正则化的线性回归-岭回归
      • 4.3.2 API
    • 4.4 分类算法-逻辑回归与二分类
      • 4.4.1 定义
      • 4.4.2 逻辑回归的应用场景
      • 4.4.3 逻辑回归的原理
      • 4.4.4 逻辑回归API
      • 4.4.5模型评估
    • 4.5 模型保存和加载
    • 4.6 无监督学习 K-means算法
      • 4.6.1 无监督学习包含算法
      • 4.6.2 K-means原理

4.回归和聚类算法

4.1 线性回归

4.1.1 线性回归的原理

  1. 线性回归应用场景

    • 房价预测
    • 销售额度预测
    • 贷款额度预测
  2. 什么是线性回归

    • 定义与公式

      • 线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。

        • 特点:只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归。

          在这里插入图片描述

    • 线性回归当中线性模型有两种,一种是线性关系,另一种是非线性关系。

      • 线性关系

        在这里插入图片描述
        在这里插入图片描述

        注:单特征与目标值的关系呈现直线关系,两个特征与目标值呈现平面的关系。

      • 非线性关系(可以理解为 W1*X1 + W2X22+W3*X33+b)
        在这里插入图片描述

4.1.2 线性回归的损失和优化原理

真实的线性关系和我们预测的线性关系存在一定误差,那么存在,我们需要把这个误差进行衡量出来(使用损失函数),我们想办法去减少误差,去修正(优化损失),不断地去逼近真实的线性关系,从而预测的结果更加准确。

  1. 损失函数(最小二乘法):

    在这里插入图片描述

  2. 优化损失

    如何去求模型当中的W,使得损失最小?(目的是找到最小损失对应的W值)

    线性回归中经常用两种优化算法:

    • 正规方程(直接求解得到W,使用高数里面求最小值的方法,进行求导)

      在这里插入图片描述

    • 梯度下降(不断试错,最终找到合适的)

4.2 欠拟合与过拟合

4.2.1 定义

欠拟合:一个假设在训练数据上不能获得更好的拟合,并且在测试数据集上也不能很好地拟合数据,此时认为这个假设出现了欠拟合的现象。(模拟过于简单)

过拟合:一个假设在训练数据上能够很好的拟合,但是在测试数据集上却不能很好地拟合数据,此时认为这个假设出现了过拟合的现象。(模型过于复杂)

在这里插入图片描述

4.2.2 原因以及解决方法

  • 欠拟合原因以及解决方法
    • 原因:学习到数据的特征过少
    • 解决方法:增加数据的特征数量
  • 过拟合原因以及解决办法
    • 原因:原始特征过多,存在一些嘈杂特征,模型过于复杂,因为模型尝试去兼顾各个测试数据点。
    • 解决方法:正则化

在这里插入图片描述

​ 如何解决 ?

​			外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.2.3 正则化

  • L2 正则化

    • 作用:可以使得其中一些W的都很小,都接近于0,削弱某个特征的影响。

    • 优点:越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。

    • 加入L2正则化后的损失函数(Ridge回归):

      在这里插入图片描述

  • L1正则化

    • 作用:可以使得其中一些W的值直接为0,删除这个特征的影响。
    • LASSO回归

4.3 线性回归改进-岭回归

4.3.1 带L2正则化的线性回归-岭回归

岭回归,其实也是一种线性回归。只不过在算法建立回归方程时候,加上正则化的限制,从而达到解决过拟合的效果。

4.3.2 API

# 具有L2正则化的线性回归
sklearn.linear_model.Ridge(alpha = 1.0,fit_intercept = True,solver = 'auto',normalize = False)# alpha : 正则化力度(惩罚项系数),也叫 λ# solver : 会根据数据自动选择优化方法 如果数据集、特征都比较大,选择该随机梯度下降优化# normalize : 数据是否进行标准化# normalize = False : 可以在fit之间调用preprocessing.StandardScaler标准化数据# Ridge.coef_ : 回归权重# Ridge.intercept_ : 回归偏置

Ridge方法相当于SGDRegressor(penalty = ‘L2’, loss = ‘squared_loss’),只不过SGDRegressor实现了一个普通的随机梯度下降学习,推荐使用Ridge(实现了SAG)

从右往左,正则化程度越来越大,weights也就是惩罚项值接近于0.

在这里插入图片描述

4.4 分类算法-逻辑回归与二分类

4.4.1 定义

​ 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。

4.4.2 逻辑回归的应用场景

  • 广告点击率
  • 是否为垃圾邮件
  • 是否患病
  • 金融诈骗
  • 虚假账号

4.4.3 逻辑回归的原理

  1. 输入(是线性回归的结果)

    在这里插入图片描述

  1. 激活函数

    • sigmoid函数

      在这里插入图片描述

    • 分析

      • 回归的结果输入到sigmoid函数中去
      • 输出结果:[0,1]区间中的一个概率值,默认为0.5为阈值

      在这里插入图片描述

逻辑回归最终的分 类是通过属于某个类别的概率值来判断是否属于某个类别,并且这个类别默认标记为1(正例),另外一个类别标记为0(反例)

  1. 损失以及优化

    逻辑回归的损失,称之为对数似然损失,公式如下:

    在这里插入图片描述

当 y = 1时:

在这里插入图片描述

当 y = 0时:

在这里插入图片描述

其中h(x)是预测值,y是真实值,坐标纵轴是损失值。h(x) = y 时无损失,否则损失趋于无穷。

  • 综合完整损失函数

    在这里插入图片描述

​ 优化:同样使用梯度下降优化算法,去减少损失函数的值,这样去更新逻辑回归前面对应算法的权重参数,提升原本属于1类别的概率,降低原本是0类别的概率。

4.4.4 逻辑回归API

sklearn.linear_model.LogisticRegression(solver = 'liblinear',penalty = 'l2',C = 1.0)# solver : 优化求解方式(默认开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数)# penalty : 正则化的种类# C:正则化力度

LogisticRegression方法相当于SGDClassifier(loss = ‘log’,penalty=’ '),GDClassifier实现了一个普通的随机梯度下降学习,也支持平均随机梯度下降法(ASGD),可以通过设置average=True。而使用LogisticRegression(实现了SAG)。

4.4.5模型评估

  1. 精确率和召回率

    • 混淆矩阵

      • 在分类任务下,预测结果(Predicted Condition)与正确标记(True Condition)之间存在四种不同的组合,构成混淆矩阵(适用于多分类)。

        在这里插入图片描述

    • 精确率和召回率

      • 精确率:预测值为正例样本中真实为正例的比例。

        在这里插入图片描述

      • 召回率:真实为正例的样本中预测结果为正例的比例。

        在这里插入图片描述

  2. 分类评估报告API

    sklearn.metrics.classification_report(y_true,y_pred,labels=[],target_names=None)# y_true:真实值# y_pred:估计器预测目标值# labels:指定类别对应的数字# target_names:目标类别名称# return:每个类别精确率与召回率
    
  3. ROC曲线与AUC指标(在样本不均衡下评估)

    • TPR(召回率)与FPR

      • TPR = TP/(TP+FN) 所有真实类别为1的样本中,预测类别为1的比例。
      • FPR = FP/(FP+TN) 所有真实类别为0的样本中,预测类别为1的比例。
    • ROC曲线

      • ROC曲线的横轴就是FPRate,纵轴就是TPRate,当二者相等时,表示的意义则是:对于不论真实类别是1还是0的样本,分类器预测为1的概率是相等的,此时AUC为0.5

        在这里插入图片描述

    • AUC指标

      • AUC的概率意义是随机取一对正负样本,正样本得分大于负样本的概率。
      • AUC的最小值为0.5,最大值为1,取值越高越好。
      • AUC=1,完美分类器,采用这个预测模型时,不管设定什么值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。
      • 0.5<AUC<1,优于随机猜测。这个分类器(模型)妥善设定值的话,能有预测
        价值。

      注:最终AUC的范围在[0.5,1]之间,并且越接近1越好。

    • AUC计算API

    • 总结

      • AUC只能用来评价二分类
      • AUC非常适合样本不平衡中的分类器性能
      from sklearn.metrics import roc_auc_score
      sklearn.metrics.roc auc_score(y_true,y_score)
      # 计算ROC曲线面积,即AUC值
      # "y_true:每个样本的真实类别,必须为0(反例),1(正例)标记
      # "y_score:预测得分,可以是正类的估计概率、置信值或者分类器方法的返回值
      

4.5 模型保存和加载

4.5.1 sklearn模型的保存和加载API

import joblib
# 保存:joblib.dump(rf,'test.pkl')
# 加载:estimator = joblib.load('test.pkl')

4.6 无监督学习 K-means算法

4.6.1 无监督学习包含算法

  • 聚类
    • K-means(k均值聚类)
  • 降维
    • PCA

4.6.2 K-means原理

  1. 效果图

    在这里插入图片描述

  2. K-means聚类步骤

    • 随机设置K个特征空间内的点作为初始的聚类中心
    • 对于其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类中心点作为标记类别
    • 接着对着标记的聚类中心之后,重新计算出每个聚类的新中心点(平均值)
    • 如果计算得出的新中心点与原中心点一样,那么结束,否则重新进行第二步过程
  3. K-means API

    sklearn.cluster.KMeans(n_clusters = 8,init = 'k-means++')
    # n_clusters:开始聚类中心的数量
    # init:初始化方法,默认为'K-means++'
    # labels_:默认标记的类型,可以和真实值进行比较
    
  4. Kmeans性能评估

    在这里插入图片描述

结论:如果b_i >> a_i趋近于1效果越好,b_i << a_i 趋近于 -1,效果不好。轮廓系数的值是介于[-1,1],越接近于1代表内聚度和分离度都相对较优。

  1. 轮廓系数API

    sklearn.metrics.silhouette_score(X,labels) # 计算所有样本的平均值轮廓系数
    # x : 特征值
    # labels : 被聚类标记的目标值
    
  2. K-means总结

    • 特点:采用迭代式算法,直观易懂并且实用
    • 缺点:容易收敛到局部最优解(可以用多次聚类解决)

相关文章:

机器学习(三)

机器学习 4.回归和聚类算法4.1 线性回归4.1.1 线性回归的原理4.1.2 线性回归的损失和优化原理 4.2 欠拟合与过拟合4.2.1 定义4.2.2 原因以及解决方法4.2.3 正则化 4.3 线性回归改进-岭回归4.3.1 带L2正则化的线性回归-岭回归4.3.2 API 4.4 分类算法-逻辑回归与二分类4.4.1 定义…...

PostgreSQL 基本SQL语法(二)

1. SELECT 语句 1.1 基本 SELECT 语法 SELECT 语句用于从数据库中检索数据。基本语法如下&#xff1a; SELECT column1, column2, ... FROM table_name; 例如&#xff0c;从 users 表中检索所有列的数据&#xff1a; SELECT * FROM users; 1.2 使用 WHERE 条件 WHERE 子…...

linux 控制台非常好用的 PS1 设置

直接上代码 IP$(/sbin/ifconfig eth0 | awk /inet / {print $2}) export PS1"\[\e[35m\]^o^\[\e[0m\]$ \[\e[31m\]\t\[\e[0m\] [\[\e[36m\]\w\[\e[0m\]] \[\e[32m\]\u\[\e[0m\]\[\e[33m\]\[\e[0m\]\[\e[34m\]\h(\[\e[31m\]$IP\[\e[m\])\[\e[0m\]\n\[\e[35m\].O.\[\e[0m\]…...

【紫光同创盘古PGX-Nano教程】——(盘古PGX-Nano开发板/PG2L50H_MBG324第十二章)Wifi透传实验例程说明

本原创教程由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处&#xff08;www.meyesemi.com) 适用于板卡型号&#xff1a; 紫光同创PG2L50H_MBG324开发平台&#xff08;盘古PGX-Nano&#xff09; 一&#xff1a;…...

详述乙级资质企业在城市综合管廊与隧道一体化设计中的挑战与机遇

挑战 1. 技术与设计复杂性 城市综合管廊与隧道项目往往涉及复杂的地质条件、地下水位、周边建筑物影响等因素&#xff0c;要求企业具备高水平的岩土工程、结构工程和流体力学等专业知识。此外&#xff0c;一体化设计需要跨学科合作&#xff0c;协调不同系统的兼容性&#xff…...

如何借助物联网实现农情监测与预警

如何借助物联网实现农情监测与预警&#xff1f; 物联网技术&#xff0c;作为信息技术与传统行业的深度融合产物&#xff0c;正逐步变革着农业生产的管理模式&#xff0c;特别是在农情监测与预警领域展现出巨大潜力。其核心在于通过感知层的各类传感器、通信层的数据传输技术以…...

一个项目学习Vue3---响应式基础

观察下面一段代码&#xff0c;学习响应式基础的全部内容 <template><div><div>将下面的msg属性放到上面来:{{ msg }}</div><button click"count">{{ count }}</button><button click"object.count.value">{{ o…...

白骑士的Python教学基础篇 1.5 数据结构

系列目录​​​​​​​ 上一篇&#xff1a;白骑士的Python教学基础篇 1.4 函数与模块 数据结构是编程语言中用于存储和组织数据的基本构件。在Python中&#xff0c;常见的数据结构包括列表&#xff08;List&#xff09;、元组&#xff08;Tuple&#xff09;、字典&#xff08…...

Go 常用文件操作

查找文件/目录 os.Stat(String)组合路径 dir, _ : homedir.Dir() filename : args[0] path : filepath.Join(dir, filename)homedir.Dir()为home根目录。 filepath.Join 会自动处理分隔符&#xff0c;将目录和文件名组合成文件路径。 检查是否含有后缀.json strings.HasSu…...

大数据、人工智能、云计算、物联网、区块链序言【大数据导论】

各位大佬好 &#xff0c;这里是阿川的博客&#xff0c;祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 本篇序言前 必看 【大数据导论】—大数据序言 这是…...

ComfyUI流程图、文生图、图生图步骤教学!

前言 leetcode , 209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 …...

CSS基础知识学习指南

CSS基础知识学习指南 1. 介绍 CSS&#xff08;层叠样式表&#xff09;是用于描述HTML文档的呈现样式的语言。通过CSS&#xff0c;可以控制网页的布局、颜色、字体等各种样式&#xff0c;使得网页更加美观和用户友好。 2. CSS基础语法 CSS由选择器和声明块组成。选择器用于选…...

力扣hot100 -- 贪心算法

&#x1f442; ▶ 逍遥叹 - 胡歌&沈以城【Mashup】 (163.com) &#x1f442; 庐州月 - 许嵩 - 单曲 - 网易云音乐 2.7 小时&#xff0c;加上写博客&#xff0c;4 道题&#xff0c;&#x1f602; -- 希望二刷时&#xff0c;可以 3 小时&#xff0c;8 道题.... 目录 &…...

P2P文件传输协议介绍

P2P文件传输协议是一种基于对等网络&#xff08;Peer-to-Peer&#xff0c;简称P2P&#xff09;的文件共享和传输技术。以下是关于P2P文件传输协议的详细介绍&#xff1a; 一、定义与原理 P2P文件传输协议允许网络中的各个节点&#xff08;即计算机或其他设备&#xff09;之间…...

Spring Boot集成Spring Mobile快速入门Demo

1.什么是Spring Mobile&#xff1f; Spring Mobile是一个基于Spring Web MVC框架扩展的一个针对不同移动终端的应用开发框架。通过它我们在适配不同终端方面&#xff0c;就不用费劲心思了。 Spring Mobile的主要功能 自动设备检测: Spring Mobile在 server端内置了一个设备解…...

走进开源企业 | 湖南大学OpenHarmony技术实训活动在开鸿智谷顺利举办!

6月24日-6月26日&#xff0c;2024开放原子校源行之湖南大学信息科学与工程学院师生走进开源企业实训交流活动顺利落下帷幕。湖南大学信息科学与工程学院的师生代表团一行90人参与了湖南开鸿智谷数字产业有限公司&#xff08;以下简称“开鸿智谷”&#xff09;与母公司拓维信息系…...

TCP单进程循环服务器程序与单进程客户端程序

实验目的 理解并掌握以下内容: 网络进程标识(即套接字地址)在Linux中的数据结构与地址转换函数。网络字节序与主机字节序的定义、转换以及相关函数在网络编程中的应用。数据结构内存对齐的基本规则,以及基于数据结构构建PDU的基本方法。TCP单进程循环服务器与单进程客户端的…...

QT+winodow 代码适配调试总结(二)

已经好多年了&#xff0c; linux环境下不同版本的QT程序开发和部署&#xff0c;突然需要适配window环境程序调试&#xff0c;一堆大坑&#xff0c;还真是一个艰巨的任务&#xff0c;可是kpi下的任务计划&#xff0c;开始吧&#xff01;&#xff01; 1、首先我们自定义的动态库…...

百家讲坛 | 裴伟伟:企业中安全团队应当如何反馈漏洞

作者简介&#xff1a;裴伟伟&#xff0c;洞源实验室创始人&#xff0c;国家网安基地网络安全行业专家&#xff0c;网安加社区特聘专家&#xff0c;持有CISSP、PMP证书&#xff0c;曾在HITCON、可信云大会、开源产业大会等安全论坛发表演讲。曾任国内某安全实验室负责人、某互金…...

巧用Fiddler中的Comments提升接口测试效率

有没有同学在使用Fiddler时跟我遇到了同样的问题&#xff0c;就是想给某个抓包的请求进行注释&#xff01;&#xff01;&#xff01;但是奇怪的是&#xff0c;根本没有Comments相关信息呀&#xff1f; 设置Comments 设置Comments非常容易&#xff0c;选中一个请求&#xff0c…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...