机器学习入门机器学习简介|附加小练习(代码片段)

小生凡一 小生凡一     2022-12-28     659

关键词:

1. 机器学习是什么

用老师上课的一张图我们可以用大白话来解释:
大量的数据通过这个学习机器学习计算,然后获取到一些精华的数据来进行一些猜想预测或是实践

e.g:

  • 举个例子,高考,每个人进行大量的题目学习,然后去高考。进行大量的题目学习,就是学习计算,然后获取到了一些精华的数据知识,去高考就是用你所学的数据知识进行实践。人如此,机器也是如此,这也可以应用在机器上面,如果一个机器去经过大量的题目进行学习,机器也可以去参加高考,而且也不会差。
  • 再举个例子,给机器很多的猫狗图片,让这个机器一直看,一直训练学习,那当训练到一定程度的时候,就会让这个机器能认清楚,识别出猫狗的图片了,这也就是机器学习了。如果是过拟合的情况,我们以后再说。

用专业术语来说的话就是
对于某类任务T和性能度量P,如果一个计算机程序在T上以P衡量的性能随着经验E而自我完善,那么我们称这个计算机程序在从经验E中学习。

2. 机器学习、深度学习和人工智能的区别与联系

今天的深度学习已经是一个广袤的学科领域了。

  • 深度学习是实现机器学习的一种方法
  • 机器学习是实现人工智能的一种途径

3. 机器学习的应用

  • 人脸识别:我们手机上的faceID就是一个机器学习的应用
  • 阿尔法狗:和世界棋手柯洁的切磋
  • 无人驾驶:特斯拉的无人驾驶技术
  • 推荐算法:抖音,头条的推荐算法,根据你的喜好,推荐你感兴趣的内容

等等

4. 机器学习分类

机器学习可分为监督学习,无监督学习,半监督学习,强化学习等等

4.1 监督学习

拥有标签可监督算法不断调整模型,得到输入与输出的映射函数

举个例子:
给你一个已经标注好的数据集,比如猫狗。已经知道这些数据集是猫和狗了,让你去进行学习。根据已给的特征进行学习辨别。去辨认未来一些未知的图像是猫还是狗。

4.2 无监督学习

标签,通过分析数据本身进行建模,发掘底层信息和隐藏结构。

举个例子:
给你一个数据集,但是你不知道这是什么数据集,可能有猫有狗,也可能有猫有狗有猪,这是不知道的,让你去根据他们的特征的不同去分类。

4.3 半监督学习

部分有标签,部分无标签,并使用这些数据进行模型训练

举个例子:
给你一个数据集,让你知道这个数据集是里面是有猫的,但是只是确定的是猫,还有没有狗和猪。这是未知的。使用大量的未标记,以及同时使用标记的数据去进行模型识别工作。

4.4 强化学习

先行动起来,如果方向正确那么就继续前行,如果错了,吸取经验,好好改正,失败乃成功之母,从头再来就是。

总之要行动,即想要理解信息,得输入到输出的映射,就需要从自身的以往经验中去不断学习来获取知识,从而不需要大量已标记的确定标签,只需要一个评价行为好坏的奖惩机制进行反馈,强化学习通过这样的反馈自己进行学习。(当前行为以后就多往这个方向发展,如果就尽量避免这样的行为,即不是直接得到了标签,而是自己在实际中总结得到的)

5. 小练习

前提:电脑已经有了python环境

安装sklearn

换源安装sklearn

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn scikit-learn

5.1 第一题

生成数据make_circlesmake_moons并显示X=400x2Y=0,1^400 画图

这个X就是一个400*2的矩阵点,点的第一个是X的值,点第二个是Y的值
Y就是这个400的点的分类,0和1代表决策,一个是内圈一个是外圈。

from sklearn.datasets import make_circles
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator

fig = plt.figure(1)  # 创建一个figure的画图窗口
"""
n_samples:整数 生成的总点数,如果是奇数,内圆比外圆多一点
shuffle:布尔变量 是否打乱样本
noise:double或None 将高斯噪声的标准差加入到数据中
random_state:整数 RandomState instance or None,确定数据集变换和噪声的随机数生成。
factor:0 < double < 1 内外圆的半径之比
"""
x1, y1 = make_circles(n_samples=400, factor=0.2, noise=0.1)  # 生成一个二维的大圆,包含一个小圆
# datasets.make_circles()专门用来生成圆圈形状的二维样本
# factor表示内圈和外圈的半径之比.每圈共有n_samples/2个点
plt.subplot(1, 2, 1)  # 一行两列,这个画在第一个
plt.title('data by make_circles()')  # 标题
yList = []
for y in y1:
    if y == 1:
        y = 'r' # 更改颜色
        yList.append(y)
    else:
        y = 'b'
        yList.append(y)
x_major_locator = MultipleLocator(0.5)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.xlim(-1.4, 1.4)         # 设置x轴间隔
plt.scatter(x1[:, 0], x1[:, 1], marker='o', c=yList)  # 横纵坐标

plt.tight_layout(pad=4)  # 两个图片之间距离

"""
n_numbers : 生成样本数量
shuffle : 是否打乱,类似于将数据集random一下
noise : 默认是false,数据集是否加入高斯噪声
random_state : 生成随机种子,给定一个int型数据,能够保证每次生成数据相同。
"""
plt.subplot(1, 2, 2)  # 一行两列,这个画在第二个
x2, y2 = make_moons(n_samples=400, noise=0.1)
x_major_locator2 = MultipleLocator(0.5)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator2)
plt.xlim(-1.4, 2.4)
plt.title('data by make_moons()')  # 标题
plt.scatter(x2[:, 0], x2[:, 1], marker='o', c=y2)
plt.show()

5.2 第二题

高维数据如何可视化?
t-SNE(t-distributedstochastic neighbor embedding )是目前最为流行的一种高维数据降维的算法。

在大数据的时代,数据不仅越来越大,而且也变得越来越复杂,数据维度的转化也在惊人的增加

例如,一组图像的维度就是该图像的像素个数,其范围从数千到数百万。对计算机而言,处理高维数据绝对没问题,但是人类能感知的确只有三个维度,因此很有必要将高维数据可视化的展现出来。那么如何将数据集从一个任意维度的降维到二维或三维呢。

T-SNE就是一种数据降维的算法,其成立的前提是基于这样的假设:尽管现实世界中的许多数据集是嵌入在高维空间中,但是都具有很低的内在维度。也就是说高维数据经过降维后,在低维状态下更能显示出其本质特性。这就是流行学习的基本思想,也称为非线性降维。

将三维的数据编程二维可查看的数据形式。

具体可以查看这一篇博客 高维数据可视化

5.3 第三题

上机器学习数据库,机器学习数据库 ,下载并显示至少一个图像和一个文档的数据集。

import PIL.Image as Image
import os

IMAGES_PATH = r'D:\\\\data\\\\jpg\\\\'  # 图片集地址
IMAGES_FORMAT = ['.jpg', '.JPG']  # 图片格式
IMAGE_SIZE = 1000  # 每张小图片的大小
IMAGE_ROW = 5  # 图片间隔,也就是合并成一张图后,一共有几行
IMAGE_COLUMN = 10  # 图片间隔,也就是合并成一张图后,一共有几列
IMAGE_SAVE_PATH = r'D:\\data\\data.jpg'  # 图片转换后的地址

# 获取图片集地址下的所有图片名称
imageNames = [name for name in os.listdir(IMAGES_PATH) for item in IMAGES_FORMAT if
              os.path.splitext(name)[1] == item]

# for x in os.listdir(IMAGES_PATH):
#     for item in IMAGES_FORMAT:

# 简单的对于参数的设定和实际图片集的大小进行数量判断
if len(imageNames) != IMAGE_ROW * IMAGE_COLUMN:
    raise ValueError("合成图片的参数和要求的数量不能匹配!")


# 定义图像拼接函数
def imageCompose():
    toImage = Image.new('RGB', (IMAGE_COLUMN * IMAGE_SIZE, IMAGE_ROW * IMAGE_SIZE))  # 创建一个新图
    # 循环遍历,把每张图片按顺序粘贴到对应位置上
    for y in range(1, IMAGE_ROW + 1):
        for x in range(1, IMAGE_COLUMN + 1):
            from_image = Image.open(IMAGES_PATH + imageNames[IMAGE_COLUMN * (y - 1) + x - 1]).resize(
                (IMAGE_SIZE, IMAGE_SIZE), Image.ANTIALIAS)
            toImage.paste(from_image, ((x - 1) * IMAGE_SIZE, (y - 1) * IMAGE_SIZE))
    return toImage.save(IMAGE_SAVE_PATH)  # 保存新图


if __name__ == '__main__':
    imageCompose()  # 调用函数

输出形式

☀️机器学习入门☀️pca和lda降维算法|附加小练习(文末送书)(代码片段)

🎉粉丝福利送书:《人工智能数学基础》🎉点赞👍收藏⭐留言📝即可参与抽奖送书🎉下周三(9月22日)晚上20:00将会在【点赞区和评论区】抽一位粉丝送这本书~🙉🎉详情请看第三点的介绍嗷~... 查看详情

☀️机器学习入门☀️图解k-means聚类算法|附加小练习(代码片段)

物以类聚经典的无监督学习算法——K-Means聚类算法目录1.K-Means定义2.K-Means步骤3.K-Means和KNN对比4.小练习4.1第一题4.2第二题4.3第三题最后1.K-Means定义K-means聚类算法首先是随机选取K个对象作为初始的聚类中心,然后计算每个样... 查看详情

深度学习入门2022最新版深度学习简介(代码片段)

...学习入门2022最新版】第一课深度学习简介概述深度学习vs机器学习机器学习是什么深度学习是什么机器学习和深度学习的区别神经网络机器学习实现二分类神经网络实现二分类TensorFlowPyTorch神经网络的原理张量张量最小值(补充)... 查看详情

机器学习编译入门课程学习笔记第一讲机器学习编译概述(代码片段)

文章目录1.课程简介2.本节课内容大纲3.机器学习编译的定义4.机器学习编译的目标5.为什么要学习机器学习编译?6.机器学习编译的核心要素6.1.备注:抽象和实现7.总结1.课程简介  该门课程是由XGBoost的作者陈天奇进行... 查看详情

简单易懂|机器学习如何快速入门?(代码片段)

1 什么是机器学习机器学习是从数据中自动分析获得模型,并利用模型对未知数据进行预测。2 机器学习工作流程1.获取数据2.数据基本处理3.特征工程4.机器学习(模型训练)5.模型评估结果达到要求,上线服务没有达到要... 查看详情

从iris数据集开始---机器学习入门(代码片段)

...特征,数据和目标结果之间的关系是什么?而且这可能是机器学习过程中最重要的部分。在开始使用机器学习实际应用时,有必要先回答下面几个问题:解决的问题是什么?现在收集的数据能够解决目前的问题吗?该 查看详情

机器学习线性回归api快速入门(代码片段)

目录1线性回归API2举例2.1步骤分析2.2代码过程3小结1线性回归API机器学习线性回归简介:https://blog.csdn.net/ZGL_cyy/article/details/126918295sklearn.linear_model.LinearRegression()LinearRegression.coef_:回归系数2举例2.1步骤分析1.获取数据 查看详情

机器学习入门四------降低损失(代码片段)

...失:迭代方法介绍了损失的概念。在本单元中,您将了解机器学习模型如何以迭代方式降低损失。迭代学习可能会让您想到“HotandCold” 查看详情

机器学习入门:多变量线性回归(代码片段)

...的两个小技巧。本文分享自华为云社区《【跟着小Mi一起机器学习吧!】多变量线性回归(一)》,原文作者:Skytier。1 多维特征既然是多变量线性回归,那么肯定是存在多个变量或者多个特征的情况啦。就拿之前研究的线... 查看详情

机器学习svm算法入门(代码片段)

目录1SVM算法简介1.1SVM算法导入1.2SVM算法定义1.2.1定义1.2.2超平面最大间隔介绍1.2.3硬间隔和软间隔1.2.3.1硬间隔分类1.2.3.2软间隔分类1.3小结2SVM算法api初步使用1SVM算法简介1.1SVM算法导入在很久以前的情人节,大侠要去救他的爱... 查看详情

markdown机器学习入门(代码片段)

查看详情

机器学习:从入门到晋级(代码片段)

摘要:什么是机器学习,为什么学习机器学习,如何学习机器学习,这篇文章都告诉给你。目前,人工智能(AI)非常热门,许多人都想一窥究竟。如果你对人工智能有所了解,但对机器学习(MachineLearning)的理解有很多的困惑... 查看详情

统计机器学习-3-numpy100题(代码片段)

numpy100道练习题这100道练习题从numpy的mailinglist、StackOverflow和numpy官方文档收集而来,其目的是提供一个快速入门的参考文档为numpy学习者,也可以用作教学练习题。如果你发现错误或者有更好的解法,欢迎在github上提... 查看详情

3天快速入门python机器学习(黑马xxx)(代码片段)

目录一、机器学习概述1.1人工智能概述1.1.1介绍1.1.2机器学习、深度学习能做些什么1.1.3人工智能阶段课程安排1.2什么是机器学习1.2.3数据集构成1.3机器学习算法分类1.3.1分类1.3.2小练习1.3.3机器学习算法分类1.4机器学习开发流程1.5... 查看详情

机器学习--入门介绍(代码片段)

...一:ARTHURSAMUL显著式编程⭐定义二:TomMitshell一、机器学习的分类监督学习分类一传统的监督学习非监督学习半监督学习⭐⭐分类二分类问题回归问题强化学习总结二、机器学习算法过程第一步:特区特征(FeatureEx... 查看详情

spark入门实战系列--8.sparkmllib(上)--机器学习及sparkmllib简介

 Spark入门实战系列--8.SparkMLlib(上)--机器学习及SparkMLlib简介 1、机器学习概念1.1 机器学习的定义在维基百科上对机器学习提出以下几种定义:l“机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,... 查看详情

机器学习入门系列01,introduction简介

我们将要学习什么东东?什么是机器学习?有右边这样非常大的音频数据集,写程序来进行学习,然后可以输出音频“Hello”有右边这样非常大的图片数据集,写程序来进行学习,然后可以识别左边这样图,识别为正确的物种。... 查看详情

机器学习之深度学习入门(代码片段)

...习资料,学习建议本文用浅显易懂的语言精准概括了机器学习的相关知识,内容全面,总结到位,剖析了机器学习的what,who,when,where,how,以及why等相关问题。从机器学习的概念,到机器学习的发... 查看详情