机器学习入门-sklearn

news2024/11/18 22:26:09

概述

机器学习定义是什么?

官方定义:

  • 机器学习是人工智能核心,是使计算机具有智能的根本途径。(地位)

  • 机器学习专门研究计算机怎样模拟或实现人类的学习行为(研究内容),以获取新的知识或技能并改善自身的性能(研究目的)。

  • 机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。(研究领域)

  • 机器学习是根据以往的经验,来改善系统自身的性能。(研究方法)

在这里插入图片描述

自己总结:

机器学习是实现人工智能的主要方法(手段)。机器学习的大致流程就是:先从已有数据(经验)中自动分析出模型(也就是规律),并通过模型对未知数据进行预测,它的最终目的是改善(具体)算法的性能。

机器学习能做什么?

图像识别、传统预测、NLP、推荐系统等

机器学习派别?

  • 深度学习:主要用于解决神经网络问题

  • 强化学习:通过计算使得奖励最大化

  • 知识图谱:

基础

机器学习是从已知数据集(经验)中分析出数据模型,再根据数据模型对新的数据进行预测的过程。

数据集内容

已知数据集的内容其实就是一系列的【属性】和这些【属性对应的值】,可以用表格来直观描述。

数据集一般由【特征值】和【目标值】构成,若某算法的数据集中不带有【目标值】,则称为无监督学习。

机器学习算法分类

根据算法已有数据集是否有【目标值】,可以将算法分为监督学习无监督学习

其中监督学习中,若【目标值】是连续的数值,则是回归问题;若目标值是离散的类别,则是分类问题

  • 监督学习-分类问题:已有数据集中带有目标值,且目标值是类别,如:预测明天是晴天还是阴天
  • 监督学习-回归问题:已有数据集中带有目标值,且目标值是连续的数值,如:预测明天多少度
  • 无监督学习:已有数据集中没有目标值(标签)

举例说明:

①通过图片来识别是猫还是狗的问题中,特征值是猫狗图片,目标值是猫和狗这两个类别。(监督学习-分类问题)

②在预测房价的问题中,特征值是除房价以为的其它的房屋信息,如果地理位置、大小、层数等,目标值是房价。(监督学习-回归问题)

③通过一群人的外貌来分析他们可能哪些人可能是同一职业或者职业相近的问题中,在数据集中特征值是人的外貌,而没有目标值,这属于无监督学习。(无监督学习-聚类问题)

大致流程

大致流程:

获取数据→数据预处理→特征工程→通过学习算法(也就是进过训练)得到数据模型→验证模型→预测结果

如何学习

在这里插入图片描述

特征工程

什么是特征工程?

通俗理解就是:对数据的特征值进行处理,使得特征能在算法中更好地发挥作用的过程

意义:特征决定了机器学习的上限,算法只是逼近这个上限而已

数据集从哪里来?

学习阶段中,使用开源框架:

  1. scikit-learn(数据量小,方便学习)
  2. kaggle(数据量巨大,含真实数据)
  3. uci(覆盖各领域)

实际应用中:来自公司内部、政府内部、花钱购买数据接口等方式获取数据

scikit-learn使用

获取数据集

数据集都是从scikit-learn.datasets调用方法获取的

  • 获取经典的、小型的数据集,可以直接使用,datasets.load_XXX(),其中XXX表示数据集名称
  • 获取大规模数据,需要从网络上下载,datasets.fetch_XXX(data_home=下载目录)

数据集返回值

返回值类型都是datasets.base.bunh,是字典类型的子类,包含属性有

  • DESC-数据集描述
  • data-特征数据
  • target-目标(标签)数据
  • feature_names-特征名
  • label_names-标签名

数据划分

机器学习中的属于一般要分成两部分,一部分用于训练得到模型,另一部分用于验证(测试)模型

  • 训练数据:70%-80%
  • 测试数据:20-30%

划分代码:

	#数据集的划分
    x_train,x_test,y_train,y_test = 			             train_test_split(iris.data,iris.target,test_size=0.2,random_state=22)
    print("训练集的特征值:\n",x_train,x_train.shape)
    print("测试集的特征值:\n",x_test,x_test.shape)

特征工程主要做什么?

  • 特征抽取/提取:将【任意形式的数据】转化成可以被机器学习算法所理解的【数字特征】
  • 特征预处理:通过一些【转换函数】将特征数据转化为【更加适合算法模型】的特征数据的过程
  • 特征降维:

特征抽取

字典特征抽取

也就是对字典类型的数据进行特征化

#获取数据
#实例化转换器
#调用fit_transform方法

转换原理是将原来的字典数据的key和value看成一个个的类别,转化成one-hot编码的矩阵,默认使用稀疏矩阵存储。

文本特征抽取

英文句子

以单词为特征值

中文句子

停用词:统计时会自动忽略掉的词汇

方法一:计算各个特征词出现的次数Count

手动或用自动分词,才会以各个词语为特征值

自动分词代码:jieba.lcut(text)

方法二:计算各个特征词的TF-IDF指标

数据预处理

一个数据集中可能各个属性的物理意义(量纲)不一样,导致各列属性值差别很大,不方便做一些运算,如在求欧氏距离时,数据值小的属性差值也小,对整体无太大意义。一般由两种处理手段,如下:

归一化

归一化就是将原始数据值映射到 [0,1]的区间上的过程,达到统一量纲的作用,归一化后的数值可以理解为一个比例值。

公式如下:
在这里插入图片描述

使用API:sklearn.preprocessing.MinMaxScaler

缺点:受到异常点影响很大,因为异常点经常都是最大值或最小值,归一法是基于最大最小值实现的

标准化

标准化就是把原始数据变换到均值为0,标准差为1,也就是将其转化为一个标准正态分布,也能达到统一量纲的作用。

X’=(x-平均值)/标准差

公式如下:
在这里插入图片描述

优点:基于平均值和标准差来计算,异常点对整体的影响不大,发挥稳定(常用)。标准化更好保持了样本间距,且更符合统计学假设。

降维

非降低维度,而是通过筛选来减少特征的个数,尽可能减少各个特征的相关程度的过程

API包:scklearn.feature_selection

特征选择法

在特征中排除掉不合适的,选择更有辨识度的主特征留下,主要有两种方法

Filter过滤式:

  • 方差选择法:对于某个特征,计算所有样本本特征的方差,排查掉方差小的特征(无特征意义)。
  • 求相关系数再处理:求各个特征之间的相关系数,相关系数-1<r<1,大于0代表正相关,小于0代表负相关,|r|越大则相关程度越高,0<|r|<0.4为低度相关,0.4<|r|<0.7为显著相关,0.7<|r|<1为高度相关,相关系数高的要进一步处理,如取一个作代表、加权得到新特征等。

api使用:

#方差选择法
	#转换器 scklearn.feature_selection.varianceThreshold
#求相关系数
	#求皮尔逊相关系数:用scipy.stats.pearsonr([],[])方法
主成分分析(PCA)

在过滤掉不合适的特征后,进一步压缩特征的个数,通过数学运算将高维数据转变为低维数据

过程:找到一条直线,通过【矩阵运算】得到主成分分析的结果

例子:将立体的水壶通过各个角度的图片来展现,从三维降低到二维

机器学习算法

假设函数:代表你通过学习算法之后建立的算法模型,例如你通过某个学习算法,从dataset中得到了一个预测房价的函数f(x),那这就是你的假设函数

代价(损失)函数:也就是表示算法模型的误差的函数,函数值越大代表误差越大,是关于θ的函数

如何求出参数θ取何值时,能使得代价函数J(θ)取值最小?

梯度下降算法

梯度下降是一种迭代算法,每迭代一次就要把所有的参数θ带入如上公式中,获得新的参数值,再继续下一次迭代,直到收敛。公式如下,其中α是学习效率,过大会导致不收敛,过小会导致收敛过慢;

在这里插入图片描述

缺点:

  • 需要选择合适的学习率α
  • 需要迭代多次才能得到最优解

正规方程法

区别于不断迭代求最优解,正规方程是一种直接通过公式直接求解的方法,公式如下,其中θ是某向量;X是m行n+1列的矩阵,每行代表一个样本的n+1个特征值;y是m行1列的矩阵,代表每个样本的目标值;
在这里插入图片描述

缺点:

  • 对于特征值个数很多的情况时,计算时间长

特殊情况:如何【X转*X】不可逆怎么办?

这种情况很少发送,如果发生了,就要检查特征中是不是有相关的特征,减少特征数量,或者加大样本数量

方法如何选择

特征值少时,直接用正规方程求解;特征值多时,用梯度下降

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

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

相关文章

PyCharm控制台中文乱码,输出�¹���

问题&#xff1a;很离谱的一件事就是python控制台可以正常的输出中文&#xff0c;但在pycharm控制台中就是乱码。 解决方法&#xff1a;之前看他们一些文章说设置pycharm的文件编码&#xff0c;不管怎么改都没用。 只是设置第一张图中的内容无效 好了&#xff0c;打完收工~

uview1.0 u-form表单回显校验不通过

提交到后端的数据&#xff0c;回显后不做任何修改无法通过表单校验 原因&#xff0c;u-form表单校验的类型默认为string&#xff0c;但是后端返回的是integer类型&#xff0c;导致无法通过校验 解决&#xff0c;既然后端返回的是整数形&#xff0c;那么我们就将校验规则的type…

有没有软件可以监控电脑软件?监控电脑软件的系统

有没有软件可以监控电脑软件&#xff1f;监控电脑软件的系统 电脑软件如果不合规也会给企业带来安全危害&#xff0c;比如盗版软件&#xff0c;比如游戏软件耽误工作等&#xff0c;所以需要对电脑软件的监控。下面我将详细介绍几款代表性的电脑监控软件及其功能&#xff0c;帮…

vscode添加代办相关插件,提高开发效率

这里写目录标题 前言插件添加添加TODO Highlight安装TODO Highlight在项目中自定义需要高亮显示的关键字 TODO Tree安装TODO Tree插件 单行注释快捷键 前言 在前端开发中&#xff0c;我们经常会遇到一些未完成、有问题或需要修复的部分&#xff0c;但又暂时未完成或未确定如何处…

树的非递归遍历(层序)

层序是采用队列的方式来遍历的 就比如说上面这颗树 他层序的就是&#xff1a;1 24 356 void LevelOrder(BTNode* root) {Que q;QueueInit(&q);if (root){QueuePush(&q, root);}while (!QueueEmpty(&q)){BTNode* front QueueFront(&q);QueuePop(&q);print…

Flutter Text导致A RenderFlex overflowed by xxx pixels on the right.

使用Row用来展示两个Text的时候页面出现如下异常,提示"A RenderFlex overflowed by xxx pixels on the right." The following assertion was thrown during layout: A RenderFlex overflowed by 4.8 pixels on the right.The relevant error-causing widget was:…

存储+调优:存储-Cloud

存储调优&#xff1a;存储-Cloud Master Server 配置&#xff1a; IP192.168.1.254 useradd mfs tar zxf mfs-1.6.11.tar.gz.gz cd mfs-1.6.11 ./configure --prefix/usr --sysconfdir/etc --localstatedir/var/lib --with-default-usermfs --with-default-groupmfs --disabl…

机器学习之决策树算法

使用决策树训练红酒数据集 完整代码&#xff1a; import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap from sklearn import tree, datasets from sklearn.model_selection import train_test_split# 准备数据&#xff0c;这里…

安装pip install xmind2image失败,4种安装pip install xmind2image在temunx高级终端的失败,却又意外发现

~ $ ~ $ ![在这里插入图片描述](https://img-blog.csdnimg.cn/b59cbb49c3e14a3bbec5675164a14009.png)#!/bin/bash # 创建一个新的空白XMind文件 xmind_dir ( m k t e m p − d ) x m i n d f i l e n a m e ′ t e s t . x m i n d ′ x m i n d p a t h " (mktemp -d…

github设置项目分类

https://www.php.cn/faq/541957.html https://docs.github.com/zh/repositories/working-with-files/managing-files/creating-new-files

在数据中心网络中隔离大象流

1000 条短突发中混入几条大象流将严重影响短突发 p99 latency&#xff0c;造成抖动。这个我在 隔离网络流以优化网络 论证过了&#xff0c;还有另一种更直观的理解方式&#xff1a; 规模差异越大&#xff0c;算术均值越偏离中位数&#xff0c;即算术均值的分位数越高。 可以…

web4.0-元宇宙虚拟现实

互联网一直在不断演变和改变我们的生活方式&#xff0c;从Web逐渐 1.0时代的静态网页到Web 2.0时代的社会性和内容制作&#xff0c;再从Web逐渐 在3.0阶段&#xff0c;互联网发展一直推动着大家时代的发展。如今&#xff0c;大家正站在互联网演化的新起点上&#xff0c;迈入Web…

两步将 CentOS 6.0 原地升级并迁移至 RHEL 7.9

《OpenShift / RHEL / DevSecOps 汇总目录》 说明 本文介绍如何将一个 CentOS 6.0 的系统升级并转换迁移到 RHEL 7.9。 本文是《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》阶进篇。 所有被测软件的验证操作可参见上述前文中对应章节的说明。 准备 CentOS 6.…

紫光同创PGL22G开发板|盘古22K开发板,国产FPGA开发板,接口丰富

盘古22K开发板是基于紫光同创Logos系列PGL22G芯片设计的一款FPGA开发板&#xff0c;全面实现国产化方案&#xff0c;板载资源丰富&#xff0c;高容量、高带宽&#xff0c;外围接口丰富&#xff0c;不仅适用于高校教学&#xff0c;还可以用于实验项目、项目开发&#xff0c;一板…

爆火!开源多模态大模型在手机端进行本地部署!

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型& AIGC 技术趋势、大模型& AIGC 落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了…

神经网络模型结构和参数可视化

神经网络模型结构和参数可视化 一、前言二、Netron2.1Netron简介2.2TensorFlow、Keras、Caffe模型文件实测结果2.3PyTorch、scikit-learn模型文件实测结果 三、NN-SVG四、Netscope五、PlotNeuralNet六、Graphviz七、总结参考文档 一、前言 在神经网络的某些应用场景中&#xf…

[STM32-HAL库]AS608-指纹识别模块-STM32CUBEMX开发-HAL库开发系列-主控STM32F103C8T6

目录 一、前言 二、详细步骤 1.光学指纹模块 2.配置STM32CUBEMX 3.程序设计 3.1 输出重定向 3.2 导入AS608库 3.3 更改端口宏定义 3.4 添加中断处理部分 3.5 初始化AS608 3.6 函数总览 3.7 录入指纹 3.8 验证指纹 3.9 删除指纹 3.10 清空指纹库 三、总结及资源 一、前言 …

线程的概念和控制

文章目录 线程概念线程的优点线程的缺点线程异常线程用途理解虚拟地址 线程控制线程的创建线程终止线程等待线程分离封装线程库 线程概念 什么是线程&#xff1f; 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一…

kali模块及字典介绍

1. 基本模块介绍 模块 类型 使用模式 功能 dmitry 信息收集 命令行 whois查询/子域名收集/端口扫描 dnmap 信息收集 命令行 用于组建分布式nmap&#xff0c;dnmap_server为服务端;dnmap_client为客户端 i…

踩坑——纪实

开发踩坑纪实 1 npm安装1.1 查看当前的npm镜像设置1.2 清空缓存1.3 修改镜像1.4 查看修改结果1.5 重新安装vue 2 VScode——NPM脚本窗口找不到3 springboot项目中updateById()失效4 前端跨域4.1 后端加个配置类4.2 CrossOrigin注解 5 路由出口6 springdoc openapi3 swagger3文件…