机器学习概述,深度学习,人工智能,无监督学习,有监督学习,增量学习,预处理,回归问题,分类问题

一、人工智能课程概述
1. 什么是人工智能
人工智能( Artificial Intelligence )是计算机科学的一个分支学科,主要研究用计算机模拟人的思考方式
和行为方式,从而在某些领域代替人进行工作 .
2. 人工智能的学科体系
以下是人工智能学科体系图:
机器学习( Machine Learning ):人工智能的一个子学科,研究人工智能领域的基本算法、原理、
思想方法,机器学习研究的内容在其它子学科都会用到
计算机视觉( Computer Vision ):研究计算机处理、识别、理解图像、视频的相关技术
自然语言处理( Natural Language Processing ):研究计算机理解人类自然语言的相关技术
语言处理:研究计算机理解识别、理解、合成语音的相关技术
3. 人工智能与传统软件的区别
传统软件:执行人的指令和想法,在执行之前人已经有了解决方案,无法超越人的思想和认识范围
人工智能:尝试突破人的思想和认识范围,让计算机学习到新的能力,尝试解决传统软件的难题
二、机器学习基本概念
1. 什么是机器学习
1975 年图灵奖获得者、 1978 年诺贝尔经济学奖获得者、著名学者赫伯特 . 西蒙( Herbert Simon )曾下
过一个定义:如果一个系统,能够通过执行某个过程,就此改进了它的性能,那么这个过程就是学习 . 由
此可看出,学习的目的就是改善性能 .
卡耐基梅隆大学机器学习和人工智能教授汤姆 . 米切尔( Tom Mitchell )在他的经典教材《机器学习》
中,给出了更为具体的定义:对于某类任务( Task ,简称 T )和某项性能评价准则( Performance ,简
称 P ),如果一个计算机在程序 T 上,以 P 作为性能度量,随着经验( Experience ,简称 E )的积累,不断
自我完善,那么我们称计算机程序从经验 E 中进行了学习 . 例如,篮球运动员投篮训练过程:球员投篮(任务 T ),以准确率为性能度量( P ),随着不断练习(经
验 E ),准确率不断提高,这个过程称为学习 .
2. 为什么需要机器学习
1 )程序自我升级;
2 )解决那些算法过于复杂,甚至没有已知算法的问题;
3 )在机器学习的过程中,协助人类获得事物的洞见 .
3. 机器学习的形式
1) 建模问题
所谓机器学习,在形式上可近似等同于在数据对象中通过统计、推理的方法,来寻找一个接受特定输入
X ,并给出预期输出 Y 功能函数 f ,即
. 这个函数以及确定函数的参数被称为模型 .
2) 评估问题
针对已知的输入,函数给出的输出(预测值)与实际输出(目标值)之间存在一定误差,因此需要构建
一个评估体系,根据误差大小判定函数的优劣 .
3) 优化问题
学习的核心在与改善性能,通过数据对算法的反复锤炼,不断提升函数预测的准确性,直至获得能够满
足实际需求的最优解,这个过程就是机器学习 .
4. 机器学习的分类(重点)
1) 有监督、无监督、半监督学习
a) 有监督学习
在已知数据输出(经过标注的)的情况下对模型进行训练,根据输出进行调整、优化的学习方式称为有
监督学习 .
b) 无监督学习
没有已知输出的情况下,仅仅根据输入信息的相关性,进行类别的划分 .
c) 半监督
先通过无监督学习划分类别,再人工标记通过有监督学习方式来预测输出 . 例如先对相似的水果进行聚
类,再识别是哪个类别 .
d) 强化学习
通过对不同决策结果的奖励、惩罚,使机器学习系统在经过足够长时间的训练以后,越来越倾向于接近
期望结果的输出 . 输入( x
输出( y
1
2
2
4
3
6
4
8
学历 (x1)
工作经验 (x2)
性别 (x3)
月薪 (y)
本科
3

8000
硕士
2

10000
博士
2

15000
2) 批量学习、增量学习
a) 批量学习
将学习过程和应用过程分开,用全部训练数据训练模型,然后再在应用场景中进行预测,当预测结果不
够理想时,重新回到学习过程,如此循环 .
b) 增量学习
将学习过程和应用过程统一起来,在应用的同时,以增量的方式不断学习新的内容,边训练、边预测 .
3) 基于模型学习、基于实例学习
a) 基于模型的学习
根据样本数据,建立用于联系输出和输出的某种数学模型,将待预测输入带入该模型,预测其结果 . 例如
有如下输入输出关系:
根据数据,得到模型
预测:输入 9 时,输出是多少?
b) 基于实例的学习
根据以往经验,寻找与待预测输入最接近的样本,以其输出作为预测结果(从数据中心找答案) . 例如有
如下一组数据:
预测:本科, 3 ,男 ==> 薪资?
5. 机器学习的一般过程 ( 重点 )

  1. 数据收集,手段如手工采集、设备自动化采集、爬虫等
  2. 数据清洗:数据规范、具有较大误差的、没有意义的数据进行清理
    注:以上称之为数据处理,包括数据检索、数据挖掘、爬虫 ......
  3. 选择模型(算法)
  4. 训练模型 5) 模型评估
  5. 测试模型
    注: 3~6 步主要是机器学习过程,包括算法、框架、工具等 ......
  6. 应用模型
  7. 模型维护
    6. 机器学习的典型应用
  8. 股价预测
  9. 推荐引擎
  10. 自然语言处理
  11. 语音处理:语音识别、语音合成
  12. 图像识别、人脸识别
  13. ......
    7. 机器学习的基本问题 ( 重点 )
    1) 回归问题
    根据已知的输入和输出,寻找某种性能最佳的模型,将未知输出的输入代入模型,得到 连续的输出 . 例
    如:
    根据房屋面积、地段、修建年代以及其它条件预测房屋价格
    根据各种外部条件预测某支股票的价格
    根据农业、气象等数据预测粮食收成
    计算两个人脸的相似度
    2) 分类问题
    根据已知的输入和输出,寻找性能最佳的模型,将未知输出的输入带入模型,得到 离散的输出 ,例如:
    手写体识别( 10 个类别分类问题)
    水果、鲜花、动物识别
    工业产品瑕疵检测(良品、次品二分类问题)
    识别一个句子表达的情绪(正面、负面、中性)
    3) 聚类问题
    根据已知输入的相似程度,将其划分为不同的群落,例如:
    根据一批麦粒的数据,判断哪些属于同一个品种
    根据客户在电商网站的浏览和购买历史,判断哪些客户对某件商品感兴趣
    判断哪些客户具有更高的相似度
    4) 降维问题
    在性能损失尽可能小的情况下,降低数据的复杂度,数据规模缩小都称为降维问题 .
    8. 课程内容 年龄
    学历
    经验
    性别
    月薪
    25
    硕士
    2

    10000
    20
    本科
    3

    8000
    ...
    ...
    ...
    ...
    ...
    三、数据预处理
    数据预处理的过程: 输入数据 -> 模型 -> 输出数据
    数据样本矩阵
    一行一样本,一列一特征。
    1. 数据预处理的目的
    1 )去除无效数据、不规范数据、错误数据
    2 )补齐缺失值
    3 )对数据范围、量纲、格式、类型进行统一化处理,更容易进行后续计算
    2. 预处理方法 1 )标准化(均值移除)
    由于一个样本的不同特征值差异较大,不利于使用现有机器学习算法进行样本处理。 均值移除 可以让样
    本矩阵中的每一列的平均值为 0 ,标准差为 1 。
    如何使样本矩阵中的每一列的平均值为 0 呢?
    预处理后的平均值为 0 :
    如何使样本矩阵中的每一列的标准差为 1 呢?
    预处理后的标准差:
    标准差:又称均方差,是离均差平方的算术平均数的平方根,用 σ 表示 ,标准差能反映一个数据集的离
    散程度
    代码示例:

数据预处理之:均值移除示例

import numpy as np

样本数据

raw_samples = np . array ([
[ 3.0 , - 1.0 , 2.0 ],
[ 0.0 , 4.0 , 3.0 ],
[ 1.0 , - 4.0 , 2.0 ]
])
print ( raw_samples )
print ( raw_samples . mean ( axis = 0 )) # 求每列的平均值
print ( raw_samples . std ( axis = 0 )) # 求每列标准差
std_samples = raw_samples . copy () # 复制样本数据
for col in std_samples . T : # 遍历每列
col_mean = col . mean () # 计算平均数
col_std = col . std () # 求标准差
col -= col_mean # 减平均值
col /= col_std # 除标准差
print ( std_samples )
print ( std_samples . mean ( axis = 0 ))
print ( std_samples . std ( axis = 0 )) 我们也可以通过 sklearn 提供 sp.scale 函数实现同样的功能,如下面代码所示:
2 )范围缩放
将样本矩阵中的每一列最小值和最大值设定为相同的区间,统一各特征值的范围 . 一般情况下会把特征值
缩放至 [0, 1] 区间。
如何使一组特征值的最小值为 0 呢?
如有 a, b, c 三个数,其中 b 为最小值, c 为最大值,则:
如何使一组特征值的最大值为 1 呢?
缩放计算方式如下公式所示:
计算完成后,最小值为 0 ,最大值为 1. 以下是一个范围缩放的示例 .
import sklearn . preprocessing as sp # 均值移除 API
std_samples = sp . scale ( raw_samples ) # scale 函数用于对函数进行预处理,实现均值移除 , 返回结
果。
print ( std_samples )
print ( std_samples . mean ( axis = 0 ))
print ( std_samples . std ( axis = 0 ))
例如有一列特征值表示年龄: [ 17 , 20 , 23 ]
每个元素减去特征值数组所有元素的最小值即可: [ 0 , 3 , 6 ]
[ 0 , 3 , 6 ]
把特征值数组的每个元素除以最大值即可: [ 0 , 1 / 2 , 1 ]

数据预处理之:范围缩放

import numpy as np

样本数据

raw_samples = np . array ([
[ 1.0 , 2.0 , 3.0 ],
[ 4.0 , 5.0 , 6.0 ],
[ 7.0 , 8.0 , 9.0 ]]). astype ( "float64" )

print(raw_samples)

mms_samples = raw_samples . copy () # 复制样本数据
for col in mms_samples . T :
col_min = col . min () 年份
Python (万人)
Java (万人)
PHP (万人)
2017
10
20
5
2018
8
10
1
我们也可以通过 sklearn 提供的对象实现同样的功能,如下面代码所示:
执行结果:
3 )归一化
有些情况每个样本的每个特征值具体的值并不重要,但是每个样本特征值的占比更加重要。反映样本所
占比率 . 用每个样本的每个特征值,除以该样本各个特征值绝对值之和。变换后的样本矩阵,每个样本的
特征值绝对值之和为 1.
例如如下反映编程语言热度的样本中, 2018 年也 2017 年比较, Python 开发人员数量减少了 2 万,但是所
占比率确上升了:
归一化预处理示例代码如下所示:
col_max = col . max ()
col -= col_min
col /= ( col_max - col_min )
print ( mms_samples )
import sklearn . preprocessing as sp

根据给定范围创建一个范围缩放器对象

mms = sp . MinMaxScaler ( feature_range =( 0 , 1 )) # 定义对象 ( 修改范围观察现象 )

使用范围缩放器实现特征值范围缩放

mms_samples = mms . fit_transform ( raw_samples ) # 缩放
print ( mms_samples )
[[0. 0. 0. ]
[0.5 0.5 0.5]
[1. 1. 1. ]]
[[0. 0. 0. ]
[0.5 0.5 0.5]
[1. 1. 1. ]]

数据预处理之:归一化

import numpy as np

样本数据

raw_samples = np . array ([
[ 10.0 , 20.0 , 5.0 ],
[ 8.0 , 10.0 , 1.0 ]
])
print ( raw_samples )
nor_samples = raw_samples . copy () # 复制样本数据
for row in nor_samples :
row /= abs ( row ). sum () # 先对行求绝对值,再求和,再除以绝对值之和 在 sklearn 库中,可以调用 sp.normalize() 函数进行归一化处理,函数原型为:
使用 sklearn 库中归一化处理代码如下所指示:
4 )二值化
有些业务并不需要分析矩阵的详细完整数据(比如图像边缘识别只需要分析出图像边缘即可),可以根
据一个事先给定的阈值,用 0 和 1 表示特征值不高于或高于阈值。二值化后的数组中每个元素非 0 即 1 ,达
到简化数学模型的目的。
以下是实现二值化预处理的代码:
同样,也可以利用 sklearn 库来处理:
二值化编码会导致信息损失,是不可逆的数值转换 . 如果进行可逆转换,则需要用到独热编码 .
print ( nor_samples ) # 打印结果
import sklearn . preprocessing as sp
sp . normalize ( 原始样本 , norm = 'l2' )

l1: l1 范数,除以向量中各元素绝对值之和

l2: l2 范数,除以向量中各元素平方之和

nor_samples = sp . normalize ( raw_samples , norm = 'l1' )
print ( nor_samples ) # 打印结果

二值化

import numpy as np
raw_samples = np . array ([[ 65.5 , 89.0 , 73.0 ],
[ 55.0 , 99.0 , 98.5 ],
[ 45.0 , 22.5 , 60.0 ]])
bin_samples = raw_samples . copy () # 复制数组

生成掩码数组

mask1 = bin_samples < 60
mask2 = bin_samples > = 60

通过掩码进行二值化处理

bin_samples [ mask1 ] = 0
bin_samples [ mask2 ] = 1
print ( bin_samples ) # 打印结果
import sklearn . preprocessing as sp
bin = sp . Binarizer ( threshold = 59 ) # 创建二值化对象 ( 注意边界值 )
bin_samples = bin . transform ( raw_samples ) # 二值化预处理
print ( bin_samples ) 5 )独热编码
根据一个特征中值的个数来建立一个由一个 1 和若干个 0 组成的序列,用来序列对所有的特征值进行编码 .
例如有如下样本:
对于第一列,有两个值, 1 使用 10 编码, 7 使用 01 编码
对于第二列,有三个值, 3 使用 100 编码, 5 使用 010 编码, 8 使用 001 编码
对于第三列,有四个值, 2 使用 1000 编码, 4 使用 0100 编码, 6 使用 0010 编码, 9 使用 0001 编码
编码字段,根据特征值的个数来进行编码,通过位置加以区分 . 通过独热编码后的结果为:
使用 sklearn 库提供的功能进行独热编码的代码如下所示:
执行结果:

独热编码示例

import numpy as np
import sklearn . preprocessing as sp
raw_samples = np . array ([[ 1 , 3 , 2 ],
[ 7 , 5 , 4 ],
[ 1 , 8 , 6 ],
[ 7 , 3 , 9 ]])
one_hot_encoder = sp . OneHotEncoder (
sparse = False , # 是否采用稀疏格式;在矩阵中,若数值为 0 的元素数目远远多于非 0 元素的数目,并
且非 0 元素分布没有规律时,则称该矩阵为稀疏矩阵,只展示非 0 的,剩下没有说明的数都是 0 ,反之是稠密矩
阵,数组形式展示所有数值。(在内存中占用更多空间但可加快运算)。二者在数据处理上速度上相差很大,
我们将这个技巧称为 "one-hot" 编码
dtype = "int32" , # 数据类型
categories = "auto" ) # 自动编码
oh_samples = one_hot_encoder . fit_transform ( raw_samples ) # 执行独热编码(一位有效编
码)
print ( oh_samples )

方法 2

对原始样本矩阵进行训练,得到编码字典

encode_dict = one_hot_encoder . fit ( 原始样本矩阵 )

调用 encode_dict 字典的 transform 方法 对数据样本矩阵进行独热编码

result = encode_dict . transform ( 原始样本矩阵 )
print ( result ) # 执行独热编码后的矩阵
print ( one_hot_encoder . inverse_transform ( result )) # 解码 6 )标签编码
根据字符串形式的特征值在特征序列中的位置,来为其指定一个数字标签,用于提供给基于数值算法的
学习模型 . 代码如下所示:
执行结果:

相关推荐
水花花花花花1 分钟前
matlab处理函数3
人工智能
潮汐退涨月冷风霜2 分钟前
利用python处理线性规划问题
开发语言·python·线性规划·数学规划
小黄酥10 分钟前
Python学习笔记--列表、字典、集合、元组
笔记·python·学习
奥利给少年12 分钟前
Machine Learning: A Probabilistic Perspective 机器学习:概率视角 PDF免费分享
人工智能·机器学习·开源
有梦想的程序星空14 分钟前
【四范式】浅谈NLP发展的四个范式
人工智能·gpt·自然语言处理
Eiceblue16 分钟前
用Python设置PDF中图片的透明度
开发语言·vscode·python·pdf
火山引擎边缘云1 小时前
探索端智能,加速大模型应用,火山引擎边缘智能 x 扣子技术沙龙等你来
人工智能·机器人·火山引擎
张琪杭1 小时前
深度学习-目标检测(一)-R-CNN
人工智能·深度学习·算法·目标检测·cnn
爆更小小刘1 小时前
Python基础语法(2)
开发语言·前端·python
为为-180-3121-14551 小时前
基于多技术融合在生态系统服务构建生态安全格局中的实践技术应用
大数据·人工智能·安全