【机器学习基础】机器学习概述与实践基础

news2024/11/26 14:45:32

在这里插入图片描述

【作者主页】Francek Chen
【专栏介绍】 ⌈ ⌈ Python机器学习 ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,依赖于强大的开源库如Scikit-learn、TensorFlow和PyTorch。本专栏介绍机器学习的相关算法以及基于Python的算法实现。

文章目录

    • 一、机器学习简介
      • (一)机器学习的概念
      • (二)机器学习的应用领域
    • 二、机器学习通用流程
      • (一)目标分析
      • (二)数据准备
      • (三)特征工程
      • (四)模型训练
      • (五)性能度量与模型调优
    • 三、Python机器学习工具库简介
      • (一)数据准备相关工具库
      • (二)数据可视化相关工具库
      • (三)模型训练与评估相关工具库


一、机器学习简介

  机器学习(Machine Learning)是一个研究计算机怎样模拟或实现人类的学习行为,它以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身性能的方向。
  机器学习是一门多领域交叉学科,涉及概率论、统计学、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习近年来的发展导致了人工智能的巨大飞跃。机器学习和深度学习需要大量的数据来工作,而这些数据正被数十亿的传感器收集到,总的来说,人工智能为为机器赋予人的智能,机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术。

在这里插入图片描述

(一)机器学习的概念

  目前关于机器学习的主流定义有以下3种。
  (1)机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。
  (2)机器学习是对能通过经验自动改进的计算机算法的研究。
  (3)机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。

  对于机器学习的概念更为具体的解释为,计算机程序通过学习,将无序的数据转换为有用的信息,进而达成程序能够自行解决实际问题的目的。该学习过程通常不需要人类对计算机程序下达指示,由程序独立完成学习过程。以一个能自动识别鸟类的计算机程序为例,程序通过学习输入的已知种类的鸟类的体重、翼长、是否有脚蹼、喙的颜色和后背颜色等数据,将这些信息转换为模式进行记忆,最终只需要输入未知类型的鸟类的对应的数据,便可自动识别该鸟类的类型。整个学习过程需要人类进行干涉的部分仅有学习时提供的鸟类样本数据,其余部分都由程序自行完成。

(二)机器学习的应用领域

  伴随着人工智能技术的发展与普及,作为人工智能核心的机器学习也得到了广泛的应用。机器学习的应用已经涵盖金融、交通、电力、教育、通信、电子商务、制造、医疗和农业等多个领域。机器学习已在不知不觉中影响人们的生产与生活。常见的十个机器学习实际应用如表所示。

表1 常见的十个机器学习实际应用
应用领域应用方向简介
金融智能投顾在投资个人或者机构提供投资的偏好、收益目标以及承担的风险水平等要求的基础上,进行智能核算和投资组合优化,从而提供最符合用户需求的投资参考
风险管控在收集和分析消费者个人相关信息的基础上,使用机器学习技术构建风险预测模型,进而能够确定风险的程度。在贷款业务中,运用机器学习技术,能够在短至几秒的时间内完成审批任务,并得出审批结果
交通智能调度能够智能化集中协调统一管理线网。同时也能进一步提高城市管理的自动化程度,可通过开放数据平台访问按需服务,同时与共享汽车、单车、出租、公交等交通终端并网,可查询实时信息及重大事件
智能控制 能够模拟人的行为来实施对列车和列车群的管理。通过车载电脑来控制列车辅助和自动驾驶,或者通过调度中心智能工作站对列车进行控制完成行车计划、运营管理和信息服务等功能
电力电力设备状态监测使用机器学习技术,在设备本身运行状态相关的温度、湿度、压力、声音、振动、频率等数据的基础上,对历史数据中的模式进行筛选,构建系统正常运行的数据模型,可以实现设备状态的自动监测
电力设备缺陷检测通过采集设备运行过程中的图像信息,然后使用深度学习、图像分类、目标检测相关的算法实现设备缺陷类型识别、设备缺陷位置检测
教育智能教学管理通过智能化教学管理系统,将教学管理要素中的人事、科研、后勤等有机结合,实现共享与动态更新教学管理信息,从而实现智能化管理,保证对突发事件的即时响应
个性化辅导 通过分析学生的基础信息数据、行为数据和学习数据,智能生成个性化学习路径、提供个性化学习支持服务、推送个性化学习资源以及进行智能测评与及时反馈,帮助学生更好地进行自主学习
通信质量监测目前通信行业已经逐渐将网络运营与维护的相关数据利用机器学习技术和大数据平台进行分析,从而便于更好地掌握网络情况,开展管理工作
安全防护将机器学习技术应用于网络防护当中,建立起一个安心的智能防护体系,保护人们的信息安全,对于网络攻击的监测程度会有很大程度的提高。应用了机器学习技术的智能防护体系还能对信息数据进行备份工作,让网络主动进行安全防护,为保护网络信息安全提供一个安心的屏障
电子商务商品智能推荐在算法框架基础之上的一套完整的推荐系统,可以实现海量数据集的深度学习,分析消费者的行为,并且预测哪些产品可能会吸引消费者,从而为他们推荐商品,这有效降低了消费者的选择成本
客户分析根据历史合作客户维度、销售数据等进行分析、构建预测模型,为企业自动推荐更精准的客户。随着销售数据库中销售数据的增加,算法的自我学习能力会提升推荐的有效度,帮助企业逐步完善更具竞争力及利润空间的战略地图,更科学、合理地规划来年需要重点攻克的行业及提前洞察客户需求,告别过去传统、简单地根据业绩选择行业的落后销售模式
制造智能测量一般的专用测量装置和系统在处理输入信号时,普遍采用建立确定的数学模型并使用规范的数学算法,但由于算法的复杂性和难度,导致在某些情况下无法对问题进行规范化的说明和表达,如测量结果的有效性验证、特定环境下最适宜量程的自动选择和零点的自动校准等。应用机器学习技术可对当前和历史数据信息进行智能分析与处理,从不同层次上对测量过程进行抽象,提高现有测量系统的性能和效率,扩展传统测量的功能
智能管理利用知识库、专家系统和决策支持系统等手段,可以建立智能管理应用平台,综合分析各类内部和外部的动态数据,参考已有的知识与规则,帮助企业管理层提供及时的决策支持,减少因决策失误导致的各种风险与浪费,提高企业综合竞争力
医疗影像识别通过计算机视觉技术对医疗影像进行快速读片和智能诊断,其应用主要包括图像识别和数据训练。首先对影像进行预处理,定位病变位置;其次是图像分割和特征提取,对病变影像进一步量化,提取病变的大小、密度、形态特征等;最后是匹配和聚类,利用深度学习,用特定的学习型算法,将特征向量映射为诊断决策,比如是良性病变还是恶性病变
辅助诊断通过计算机学习医疗知识,模拟医生的思维和诊断推理,给出可靠的诊断和治疗方案。辅诊能力基于大数据硬件和神经网络芯片等计算能力,对医疗领域大量数据进行系统训练和优化,运用自然语言处理、认知技术、自动推理、机器学习、信息检索等技术,实现自动问答、挂号、临床决策、诊疗决策等全方位的智能诊疗
农业土壤成分检测分析可对土壤传感器收集到的可溶性盐含量、地表水分蒸发量、土壤湿度等数据通过人工神经网络进行预测分析,决策各类农作物所适宜的最佳土壤,也可预测土壤表层的黏土含量,通过深度加权方法从土壤传感器获取的信号中提取土壤表层地质信息,再使用人工神经网络预测土壤表层的黏土含量
农田灌溉用水分析对农作物用水需求量进行分析,可以科学地指导农户灌溉,保证作物有水可依,极大程度减轻洪涝或干旱灾害对作物造成的不良影响。此外,智能灌溉系统与传感器、灌溉设备连接后,可对土壤含水量进行实时监控,据此选择最合适的灌溉模式进行作物灌溉
表2 国内外知名人工智能企业榜单
编码企业名称人工智能技术应用领域所属国家成立时间资本市场状态市值/估值/融资额
1Microsoft(微软)计算机视觉技术、自然语言处理技术等办公美国1975年上市市值1.21万亿美元
2Google(谷歌)计算机视觉技术、自然语言处理技术等综合美国1998年上市 市值9324亿美元
3Facebook(脸书)人脸识别、深度学习等社交美国2004年上市市值5934亿美元
4百度计算机视觉技术、自然语言处理技术、知识图谱等综合中国2001年上市市值438亿美元
5大疆创新图像识别技术、智能引擎技术等无人机中国2006年战略融资估值210亿美元
6商汤科技计算机视觉技术、深度学习安防中国2014年D轮融资估值70亿美元
7旷视科技计算机视觉技术等安防中国2011年D轮融资估值40亿美元
8科大讯飞智能语音技术综合中国1999年上市市值108亿美元
9Automation Anywhere自然语言处理技术、非结构化数据认知企业管理美国2003年B轮融资估值68亿美元
10IBM Watson(IBM沃森)深度学习、智适应学习技术计算机美国1911年上市市值1198亿美元
11松鼠AI 1对1智适应学习技术、机器学习教育中国2015年A轮融资估值11亿美元
12字节跳动跨媒体分析推理技术、深度学习、自然语言处理、图像识别资讯中国2012年Pre-IPO轮融资估值750亿美元
13Netflix(网飞)视频图像优化、剧集封面图片个性化、视频个性化推荐媒体及内容美国1997年上市市值1418亿美元
14Graphcore智能芯片技术、机器学习芯片英国2016年D轮融资估值17亿美元
15NVIDIA(英伟达)智能芯片技术芯片美国1993年上市市值1450亿美元
16Brainco脑机接口教育、医疗、智能硬件美国2015年天使轮融资融资额600万美元
17Waymo 自动驾驶交通美国2016年C轮融资估值1050亿美元
18ABB Robotics机器人及自动化技术机器人瑞士1988年上市市值514亿美元
19Fanuc(发那科)机器人技术制造日本1956年上市市值362亿美元
20Preferred Networks深度学习、机器学习技术物联网日本2016年C轮融资估值20亿美元

二、机器学习通用流程

  一个完整的机器学习模型训练的过程可拆分为诸多个步骤,包括前期的目标分析、数据准备、特征工程,中期的模型训练与调优以及后期的性能度量与模型选择。其中,数据准备和特征工程通常都被归类为机器学习中的数据预处理阶段。机器学习的通用流程如下图所示。

在这里插入图片描述

(一)目标分析

  目标分析是机器学习前期准备的一个重要步骤,目标分析包含需求分析与类型分析两种。

1. 需求分析

  在软件工程中,需求分析是指在创建系统或产品前,确定新系统的目的、范围、定义和功能的步骤。机器学习中的需求分析是指确定机器学习的使用场景,需要解决的业务和技术问题。
  机器学习中的需求分析与软件工程的中的需求分析不同点在于,软件工程的需求分析注重实现某一个功能,而机器学习的需求更注重于解决某一个具体问题。
  机器学习中的需求分析需要分析想要解决问题需要达成的具体目标,例如,要识别邮件是否是垃圾邮件,需要解决如何区分垃圾邮件与正常邮件的具体问题,需要达成的具体目标就是从一堆未知的邮件中,准确地寻找出其中的垃圾邮件,剩下的便是正常的邮件。同时还需要分析邮件系统可提供的信息,如每封邮件可以提供的信息包含:发件人、发件邮箱地址、邮件标题等等,需要制定一个依据此类信息来解决垃圾邮件识别的初步构想,从而确定需要收集与分析的数据。

2. 类型分析

  类型分析是选定机器学习使用的算法种类的重要步骤,为之后的算法选取与模型训练起到铺垫作用。机器学习的类型按训练方式可分为有监督学习、无监督学习和半监督学习。

(1)有监督学习

  有监督学习的算法能够从带有标记的训练资料中学习或建立一种知识,依据此知识对新的实例进行推测。垃圾邮件识别是一个典型的有监督学习问题,人们会对以往已经确认是垃圾邮件的邮件打上标记,而机器学习算法将会依赖这些标记进行学习。
  有监督学习可细分为分类与回归,分类的目标是预测一批未知类型的对象的类别,典型的分类问题有垃圾邮件识别、恶意软件检测等,这类问题需要识别具体的对象的具体类别。回归则是预测某一事物未来的发展变化状况,典型的回归问题有股票价格预测、未来几天的气温变化预测等,这类问题需要预测对象的未来某一具体数值属性的变化。

(2)无监督学习

  无监督学习与有监督学习相反,训练资料中没有预设的标记,需要算法自行从训练资料中建立一种知识。客户分群是一个典型的无监督学习问题,需要分群的客户不具备具体的类别等参考信息,仅可通过相似的特征进行分群,如年龄、性别、消费行为等,按具体的属性的相似度进行分群,并且结果具有不确定性和非唯一性。

(3)半监督学习

  半监督学习介于非监督学习和监督学习之间,半监督学习使用部分标记的训练资料进行训练,这些训练资料由少量带有标记的数据和大量不带标记的数据构成。标记数据的成本使得标记全部数据不太现实,而获取未标记的数据相对便宜。在这种情况下,半监督学习可能具有很大的实用价值。许多机器学习研究人员发现,将未标记数据与少量标记数据结合使用可以显著提高学习准确性。

(二)数据准备

  数据准备是机器学习中最重要的一个步骤,没有数据,机器学习便无从谈起。数据准备可细分为数据收集、数据探索和数据清洗。

1. 数据收集

  数据收集是数据准备最初始的步骤,收集的数据的种类将直接影响模型训练的结果,其中需要特别注意样本数据的偏差状况,实际生产生活中的数据往往并不是均匀分布的,如果无视样本数据分布的偏差而直接使用随机抽样采集数据,那么模型的训练结果将会明显地偏向数量较多的种类。而数据量将影响模型的精确度与训练时间,若数据量越丰富、覆盖越广,则模型的精确度将越高,但同时训练时间也可能会增加。
  根据数据来源的不同,数据收集也需要采取不同的方式,与业务系统对接的数据可直接从数据库采集,而网络数据则往往需要爬虫进行爬取。不同类型的数据所需要用到的存储模式也不一样,结构化数据需要存储在结构化的关系型数据库中,如邮件系统中的邮件数据。非结构化数据则需要另行存储,如图片、音频片段等。

2. 数据探索

  在数据收集完毕后,为了掌握数据中的基本状况,需要进行数据探索。数据探索分为数据质量校验、数据分布与趋势探查。

(1)数据质量校验

  在实际生产环境中的业务数据或网络爬虫爬取的数据,往往掺杂了大量的噪声数据。噪声数据指的是数据中无意义的空值或明显偏离正常水平的异常值,这些噪声数据如果不经处理直接进入模型,那么将会严重影响模型的结果。
  数据质量检验包括一致性检验、缺失值检验、异常值检验。一致性检验用于检验数据之间的一致性,包括时间校验、字段校验、粒度校验等;缺失值检验用于检测数据中是否存在空值;异常值检验用于检测数据中是否存在明显偏离正常分布区间或不符合业务逻辑的数据。

(2)数据分布与趋势探查

  数据探索的另一个重要目的是探索数据的分布与数据的变化趋势,以图形或统计指标的方式发现数据中的模式和关系。如通过最大最小值、分位数等指标或通过箱型图,探索数据的分布区间和密度。
  数据分布与趋势探查常用于将数据分组,识别潜在的模式,发现数据的趋势,或探索不同属性之间的关系。分布与趋势分析通常包括分布分析、对比分析、描述性统计、周期性分析、贡献度分析和相关性分析等,使用可视化图表如条形图、箱线图、时间轴等可以更直观地展示数据的状况。

3. 数据清洗

  数据清洗是数据准备中的最后一道工序,数据清洗的结果质量将直接影响到模型结果与最终结论。数据清洗如同它的字面意思一样,将数据中的“脏数据”清洗掉,处理数据中存在的缺失值、异常值与不一致值。
  数据清洗需要处理的方面包括:缺失的数据,不规范的数据格式与内容,重复的数据,不合理的异常值,相矛盾的数据等。同时还需要注意具体情况需具体分析,如缺失严重的数据字段可能需要删除,而一些相关性不强的缺失字段可能并不需要插补。

(三)特征工程

  特征工程是机器学习中的一个重要的前置步骤,会直接影响机器学习的效果,通常需要大量的时间。特征工程是一个将原始数据中的特征进行缩放、筛选和构造的过程,特征需要能够更好描述原始数据的状况,从而提升模型的训练速度与拟合效果。
  特征工程包含特征缩放、特征选择和特征构造等过程。

1. 特征缩放

  特征缩放包含数据标准化、独热编码和数据离散化。数据标准化将数据中量纲差异尽可能缩小,最终使得特征的取值范围落入一个更小的区间内。数据中不同特征的取值范围不一样,直接进行分析会对结果的准确性造成影响,因此需要对数据进行标准化处理。
  独热编码(One-Hot)将离散型的特征使用N位状态寄存器对特征的N个状态进行编码,每个状态都对应拥有独立的寄存器位,并且在任意时候只有一个编码位有效。将离散型特征进行独热编码后,特征的每个状态变得更为独立,更方便进行距离计算。
  离散化将连续型特征按照分割点进行划分,最终转化为离散型的特征。部分分类算法要求输入的数据是离散型的,因此需要将连续型特征离散化之后才能进行模型训练。

2. 特征选择

  特征选择按照特征重要性对特征进行排序或依据具体的业务需求,从特征集合中挑选一组最具统计意义的特征子集,从而达到降维的效果。
  原始数据集中的特征对于目标类别的作用并不相等,特征选择能够剔除一些与目标无关的或相关性不强的特征,减少进入模型的数据量,提高训练速度。不过需要注意的是,在有时候有些看上去无关或相关性不强的数据中,往往也隐含着有用的信息,因此特征选择需要慎重进行。

3. 特征构造

  特征构造在原始数据中原有特征的基础上,构建新的更适合于机器学习算法的特征。特征构造常用于文本分析、图像分析和用户行为分析等领域,文本和图像的原始数据的特征往往难以直接用于机器学习,而且用户的行为特征也常常隐藏在原始数据的特征中,这时需要从原始数据的特征中进行提取,构造出新的满足算法要求的更为显著的特征。

(四)模型训练

  在完成目标分析、数据收集、数据探索、数据清洗和特征工程等一系列前期准备后,将进入模型训练的步骤。模型训练包含数据集划分、算法选择与模型训练。

1. 数据集划分

  数据集用于有监督学习时,通常需要划分为训练集、验证集与测试集。训练集用于模型训练;验证集可以在训练过程中检验模型的性能和收敛情况,通常用于调整模型参数,根据几组模型验证集上的表现决定哪组参数能使模型拥有最好的性能;测试集用于测试模型对于未知数据的拟合效果,防止模型过度拟合于训练集的数据特征,而没有抽象得出更为通用的规则。
  划分数据集时需要注意数据集中样本的分布,往往数据集中的样本类别并不是均匀分布的,划分时需要避免这种不均匀分布造成的偏差。

2. 算法选择与模型训练

  模型训练前需要针对问题的类型选择合适的算法,同类算法也需要多准备几个备选用于效果对比。过于复杂的算法往往反而不是最优的选择,算法的复杂度与模型训练时间呈现正相关,算法复杂度越高,模型训练时间往往也越长,而结果的精度可能与简单的算法相差无几。训练时可先使用小批量数据进行试验,避免直接使用大批量数据训练导致的训练时间过长等问题。

(五)性能度量与模型调优

  在模型训练完毕后,需要对模型的性能进行评价,选出评价最优的模型。
  针对不同类型的机器学习任务,如分类、回归、聚类等,所用的评价指标往往也不同。如分类模型常用的评价方法有准确率(Accuracy)、对数损失函数(Logloss)、AUC等。
  同一种评价方法也往往适用于多种类的任务。对于实际的生产环境,模型性能评价的侧重点也不一样,不同的业务场景对模型的性能有不同的要求,如可能造成经济损失的预测结果会要求更高的模型精度。

  仅训练一次模型往往无法达到理想的精度与效果,需要进行模型调优迭代,提升模型的效果。
  模型调优往往是一个复杂冗长且枯燥的过程,需要多次对模型的参数做出修正,调优的同时需要权衡模型的精度与泛用性,在提高模型精度的同时还需要避免造成过拟合。
  在现实生产与生活中,数据的分布会随着时间的推移而改变,有时甚至变化得很急剧,这种现象称为分布漂移(Distribution Drift)。当一个模型随着时间的推移,在新的数据集中的评价不断下降时,意味着这个模型无法适应新的数据的变化,此时模型需要进行重新训练。

三、Python机器学习工具库简介

  Python提供多个强大第三方扩展库对机器学习的各个步骤提供支持,包含pandas、NumPy、Matplotlib、scikit-learn和TensorFlow等。

(一)数据准备相关工具库

  Python第三方库中的SQLAlchemy提供数据库连接,而NumPy和pandas都是当下非常重要的Python科学运算模块,为数据准备提供良好的支持。

1. SQLAlchemy

在这里插入图片描述 https://www.sqlalchemy.org/

  SQLAlchemy是一种既支持原生SQL,又支持ORM的工具库,ORM是Python对象与数据库关系表的一种映射关系,可有效提高写代码的速度,同时兼容多种数据库系统,如SQLite、MySQL、PostgreSQL,代价为性能上的一些损失。
  SQLAlchemy提供了强大的对象模型间的转换,可以满足绝大多数数据库操作的需求,可通过3种方式操作数据库:使用SQL Expression,通过SQLAlchemy提供的方法编写sql表达式,间接地操作数据库;使用原生SQL,直接书写SQL语句;使用ORM对象映射,将类映射到数据库,通过对象操作数据库。

2. NumPy

在这里插入图片描述 https://numpy.org/

  NumPy支持多维数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。通常与SciPy和Matplotlib一起使用,支持比Python所支持的种类更多的数值类型。核心功能是被称为ndarray(n-dimensional array,多维数组)的数据结构。这是一个表示多维度、同质并且固定大小的数组对象。由一个与此数组相关系的数据类型对象描述其数组元素的数据格式,例如其字符组顺序、在存储器中占用的字符组数量、整数或者浮点数等。
  NumPy的数组包含以下3个特征:通常是由相同种类的元素组成的,即数组中的数据项的类型一致,能快速确定存储数据所需空间的大小;能够运用向量化运算来处理整个数组,速度较快;使用优化过的C语言的API,运算速度较快。

3. Pandas

在这里插入图片描述 https://pandas.pydata.org/

  Pandas是基于NumPy的一种工具,为解决数据分析任务而生。纳入大量库和一些标准的数据模型,提供高效地操作大型数据集所需的工具及大量能快速便捷处理数据的函数和方法,为时间序列分析提供很好的支持,提供多种数据结构,如Series、Time-Series、DataFrame和Panel。
  其中,Series和DataFrame是最常用的数据结构:Series是一个类似一维数组的对象,包含一个数组的数据,该数据可以是任何NumPy的数据类型,和一个被称为索引的与数组关联的数据标签;DataFrame类似日常使用的Excel表格,包含一个经过排序的列表集,每一行数据都可以有不同的类型值(数字、字符串、布尔等),拥有行和列的索引,可以看作是一个每个Series共享一个索引的Series的字典。

(二)数据可视化相关工具库

  Python中的可视化库可大致分为基于Matplotlib的可视化库、基于JS的可视化库和基于上述两者或其他组合功能的库。

1. Matplotlib

在这里插入图片描述 https://matplotlib.org/

  Matplotlib是Python下著名的绘图库,为了方便快速绘图,Matplotlib通过pyplot模块提供了一套和MATLAB类似的绘图API,将众多绘图对象所构成的复杂结构隐藏在这套API内部,十分适合交互式绘图。只需要调用pyplot模块所提供的函数即可实现快速绘图以及设置图表的各种细节。
  能够创建多数类型的图表,包括线图、散点图、等高线图、条形图、柱状图、3D图形、甚至是图形动画等。可通过参数定制图形,调整坐标轴、标题、图例、线条大小颜色等图形参数。

2. Seaborn

在这里插入图片描述 https://seaborn.pydata.org/

  Seaborn在Matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,跟Matplotlib最大的区别为默认绘图风格和色彩搭配都具有现代美感,在大多数情况下使用Seaborn就能做出很具有吸引力的图。
  提供5个预设好的主题(darkgrid、whitegrid、dark、white和ticks),默认主题为darkgrid。可以绘制多种图形包括散点图、直方图、条形图、热点图、联合分布等。由于Seaborn是Matplotlib的高级接口,所以在使用Seaborn的时候仍然可以调用Matplotlib的函数。

3. Bokeh

在这里插入图片描述 https://bokeh.org/

  Boken是一个Python交互式可视化库,用于在Web浏览器上进行展示。
  优点是能用于制作可交互,可直接用于网络的图表。图表可以输出为JSON对象,HTML文档或者可交互的网络应用。支持数据流和实时数据,采用了分层方法兼顾不同用户的使用需求,并提供了适合不同使用级别的不同编程接口,即控制水平。
  Bokeh提供了3种控制水平:最高的控制水平用于快速制图,主要用于制作常用图像;中等控制水平与Matplotlib一样允许开发人员控制图像的基本元素(例如分布图中的点);最低的控制水平主要面向开发人员和软件工程师,在最低的控制水平下没有默认值,需要定义图表的每一个元素。

(三)模型训练与评估相关工具库

  目前Python已拥有许多成熟的第三方库,其中整合了大量的算法用于模型训练与评估。

1. SciPy

在这里插入图片描述 https://scipy.org/

  SciPy是基于NumPy构建的一个集成了多种数学算法和函数的Python模块,能够实现线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等。
  其中,stats模块是一个强大的统计工具包,包含了多种概率分布的随机变量,随机变量分为连续型与离散型两类。而cluster模块提供层次聚类,矢量量化与K-Means聚类等功能。

2. Scikit-learn

在这里插入图片描述 https://scikit-learn.org/stable/

  Scikit-learn是一个基于NumPy和SciPy,专门为机器学习建造的Python模块,提供了大量用于机器学习的工具。
  基本功能主要被分为6个部分:分类、回归、聚类、数据降维、模型选择和数据预处理。其算法库中集成大量算法,包括支持向量机、逻辑回归、朴素贝叶斯分类器、随机森林、Gradient Boosting、K-Means聚类和DBSCAN等。

3. Keras

在这里插入图片描述 https://keras.io/

  Keras是一个高度模块化的神经网络库,使用Python实现,并可以同时运行在TensorFlow和Theano上。Keras专精于深度学习,提供了目前为止最方便的API,用户仅需将高级的模块拼在一起便可设计神经网络,大大降低了构建神经网络的编程成本(code overhead)与理解成本(cognitive overhead)。
  同时支持卷积网络和循环网络,支持级联的模型或任意的图结构的模型,从在CPU上计算的模式切换到使用GPU加速无须任何在代码上的改动。简化了编程的复杂度的同时,在性能上丝毫不逊色于TensorFlow和Theano。
  Keras的功能分为几大模块,包括优化器(optimizers)、目标函数(objectives)、激活函数(activations)、参数初始化(Initializations)、层(layer)等。

4. TensorFlow

在这里插入图片描述 https://tensorflow.google.cn/

  TensorFlow是一个相对高阶的机器学习库,也是目前最流行的深度学习库,核心代码使用C++编写并支持自动求导,用户可以方便的设计神经网络结构,不需要亲自编写C++或CUDA代码也无需通过反向传播求解梯度。由于底层使用C++语言编写,使得运行效率得到了保证,并简化了线上部署的复杂度。
  除了核心代码的C++接口,TensorFlow还有官方的Python、Go和Java接口,用户可以在一个硬件配置较好的机器中用Python进行实验,并在资源比较紧张的嵌入式环境或需要低延迟的环境中用C++部署模型。
  TensorFlow不只局限于神经网络,它具有的特色的数据流图支持非常自由的算法表达,也可以轻松实现深度学习以外的机器学习算法。TensorFlow还支持包含算术操作、张量操作、数据类型转换、矩阵的变形、切片、合并、规约、分割、序列比较与索引提取等常用的Math、Array、matrix相关的操作功能。

5. PyTorch

在这里插入图片描述 https://pytorch.org/

  PyTorch是一个由Facebook的AI研究团队发布的Python工具包,专门针对GPU加速的深度神经网络(DNN)编程。
  PyTorch提供了两个高级特性,可使用GPU加速的张量计算与自动求导机制。PyTorch利用GPU加速的张量计算加速科学计算,提升程序运行效率,例如切片、索引、数学运算、线性代数等。
  PyTorch使用基于自动求导的动态神经网络,支持直接修改模型架构,使得PyTorch拥有debug方便,能快速在tensor和NumPy间相互转换,具有程序包小、速度快,程序简洁与易扩展的优点。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker中使用自定义网络方式实现Redis集群部署与测试流程

场景 Docker中Docker网络-理解Docker0与自定义网络的使用示例: Docker中Docker网络-理解Docker0与自定义网络的使用示例-CSDN博客 参考上面的流程实现自定义网络的实现。 下面记录其应用实例,使用Docker的自定义网络实现redis集群部署。 注&#xf…

IP地址https证书的优势与申请途径

一、IP地址SSL证书的优势 无需域名:对于一些内部系统或者专用设备而言,它们可能不具有域名,但仍需保障通信安全。IP地址SSL证书正好满足这一需求。简化管理:对于拥有大量设备的企业来说,维护每个设备的域名可能是一个…

tomato-靶机渗透

tomato-靶机 一、安装靶机环境 下载双击.ova文件,写文件名路径导入 打开虚拟机用NAT模式 编辑–>虚拟网络编辑器查看IP段 二、信息收集 1.御剑端口扫描查找该虚拟机的IP 访问网站 扫目录 dirb http://192.168.30.130 收集到目录 /server-status /antibot_im…

成为git砖家(9): git checkout <commit> <file> 的含义

文章目录 1. 目的2. 官方文档解释3. Tower 的解释4. References 1. 目的 git checkout 命令承载了非常多的功能&#xff0c; 想要一次全弄懂&#xff0c;不太现实&#xff1b; 这次白鱼带领大家学习 git checkout <file> 的用法。 老规矩&#xff0c;先查看 git checko…

鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇

一、概述 云数据库是一款基于对象模型的数据库&#xff0c;采用存储区、对象类型和对象三级结构。 数据模型 存储区 存储区是一个独立的数据存储区域&#xff0c;多个数据存储区之间相互独立&#xff0c;每个存储区拥有完全相同的对象类型定义 --类似于关系型数据库中的da…

如何有效管理众多账号密码:选择适合你的密码管理工具

在如今的数字化时代&#xff0c;我们的生活几乎离不开各种互联网应用和服务。从社交媒体到在线银行&#xff0c;从购物网站到工作平台&#xff0c;每个应用都要求我们注册账号并设置密码。 随着账号数量的不断增加&#xff0c;管理这些密码成为了一个令人头疼的问题。幸运的是…

AMEYA360:上海雷卯电子CAN BUS芯片静电浪涌击穿整改方案

在现代电子系统中&#xff0c;CAN Bus(Controller Area Network Bus&#xff0c;控制器局域网络总线)作为一种常用的通信协议&#xff0c;标准CAN通常指的是CAN 2.0A和CAN 2.0B协议&#xff0c;其最大通讯速率为1Mbps。而高速CAN通常指的是CAN FD(CAN Flexible Data-rate)协议&…

如何磁盘覆写

使用命令提示符写0 命令提示符是Windows系统内置的一个非常实用的工具&#xff0c;可以通过几行短短的命令来完成各种各样的电脑相关操作而无需开启应用程序&#xff0c;所以我们可以通过命令提示符中的format命令来完成硬盘写0任务。 步骤1. 在搜索框中输入cmd并以管理员身份…

每日一题系列-两个数组的交集

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” class Solution { public:int hash[1010] {0};vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {vector<int> ret;for(a…

漏洞复现-路由器TOTOLINK-A6000R-RCE

本文来自无问社区&#xff0c;更多漏洞信息可前往查看http://wwlib.cn/index.php/artread/artid/14996.html 0x01 产品简介 TOTOLINK A6000R是一款性能卓越的无线路由器&#xff0c;采用先进的技术和设计&#xff0c;为用户提供出色的网络体验。其支持最新的Wi-Fi标准&#x…

Java学习----类和对象与封装

目录 一、面向对象和面向过程二、类类的定义类的实例化this引用&#xff08;这一块一定要看懂哦&#xff09;类的构造方法成员变量的初始化 三、封装包常见的包 四、关于static初始化 五、代码块六、对象的打印--toString 一、面向对象和面向过程 众所周知&#xff0c;Java语言…

HomeServer平台选择,介绍常用功能

​​ 平台选择 HomeServer 的性能要求不高&#xff0c;以下是我的硬件参数&#xff0c;可供参考&#xff1a; ‍ 硬件&#xff1a; 平台&#xff1a;旧笔记本CPU&#xff1a;i5 4210u内存 8G硬盘&#xff1a;128G 固态做系统盘&#xff0c;1T1T 机械盘组 RAID1 做存储。硬…

计算机网络-七层协议栈介绍

之前介绍了网络世界的构成&#xff0c;从宏观角度介绍了网络设备和网络架构&#xff0c;链接: link&#xff0c;但是这种认识过于粗糙&#xff0c;过于肤浅。网络本质上是用于主机之间的通信&#xff0c;是端对端的连接通信&#xff0c;两台计算机可能距离很远&#xff0c;主机…

新书推荐:《码农职场:IT 人求职就业手册》——照亮你的职业道路

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

PHP中关于排名和显示的问题

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

【LLM】五、open-webui+ollama搭建自己的RAG服务

系列文章目录 往期文章回顾&#xff1a; 【LLM】四、RAG简介 【LLM】三、open-webuiollama搭建自己的聊天机器人 【LLM】二、python调用本地的ollama部署的大模型 【LLM】一、利用ollama本地部署大模型 文章目录 ​​​​​​​ 目录 系列文章目录 文章目录 前言 一、RAG是…

计算机网络必会面经

1.键入网址到网页显示&#xff0c;期间发生了什么 2.在TCP/IP网络模型中。TCP将数据进行分段后&#xff0c;为什么还需要IP层继续分片 3.详细说明tcp三次握手&#xff0c;为什么是三次&#xff0c;若每次握手丢了&#xff0c;解决办法是什么 4.详细说明tcp四次挥手&#xff…

基于Docker搭建ELK

目录 1.系统操作 2.搭建es 3.kibana(新起终端跟es一起启动) 4.logstash&#xff08;新起终端和es一起启动&#xff09; 5.修改logstash配置文件 6. 创建索引 7. exit #退出容器 8. 在logstash节点插入数据&#xff0c;测试是否能拿取到&#xff08;下面如果本身有数据…

前端如何实现更换项目主题色的功能?

1、场景 有一个换主题色的功能&#xff0c;如下图&#xff1a; 切换颜色后&#xff0c;将对页面所有部分的色值进行重新设置&#xff0c;符合最新的主题色。 2、实现思路 因为色值比较灵活&#xff0c;可以任意选取&#xff0c;所以最好的实现方式是&#xff0c;根据设置的…

springboot文献检索系统-计算机毕业设计源码48521

摘要 文献检索系统主要功能模块包括用户管理、公告信息、新闻资讯、文献信息等&#xff0c;采取面对对象的开发模式进行软件的开发和硬体的架设&#xff0c;能很好的满足实际使用的需求&#xff0c;完善了对应的软体架设以及程序编码的工作&#xff0c;采取MySQL作为后台数据的…