AI应用实战课学习总结(2)hello sk-learn

大家好,我是Edison。

最近入坑黄佳老师的《AI应用实战课》,记录下我的学习之旅,也算是总结回顾。

今天是我们的第2站,了解下scikit-learn框架(简称sk-learn)及相关的常用可视化库,一起和机器学习说声“Hello World”!

机器学习是什么?

上一篇,我们了解到:机器学习(Machine Learning)的本质是:用函数模拟事物关系

机器学习约等于从数据中习得一个函数完成某个任务,如价格预测、图像识别等。

那么,作为一个CRUD程序员,要快速入门机器学习,基于Python语言和其丰富的机器学习生态,可以让我们快速了解入坑。

为了实现今天的目标,建议你安装以下工具:

  • Anaconda 3 (也可以不用,但对新手来说这个比较方便,Python也一起安装了)

  • Python 3.12 (如果不安装Anaconda,那么需要单独安装Python SDK)

  • Visual Studio Code,同时在VS Code中安装两个扩展

    • Python

    • Jupyter

这里重点说下 Ananconda、Jupyter 和 Python 的关系,如下图所示。Jupyter Notebook是一个像学习笔记风格的Python IDE,非常适合我们这样的Python新手,不过呢,这里我们不使用独立的Jupyter Notebook,而是在Visual Studio Code使用Jupyter的扩展即可。

scikit-learn机器学习框架

有了上面的开发工具,我们就需要一把剑了,这把剑就是机器学习框架,这里我们选择scikit-learn。

在Python生态中,大多数只能称其为库(Library),而只有像TensorFlow、Pytorch和Scikit-Learn才能被称之为框架(Framework)。

scikit-learn也称sk-learn,是目前最流行的开源机器学习工具,它基于NumPy、SciPy和Matplotlib这几个库构建,支持如下所示的各种常见的分类、回归和聚类算法,简直就是一站式算法和模型服务到家:

  • 支持向量机(SVM)

  • 随机森林

  • 梯度提升

  • K-Means

  • DBSCAN等等

除此之外,scikit-learn还提供了一系列的工具,可以做数据预处理、特征选择、模型评估,还有一系列的机器学习流程的pipeline,方便我们可以直接上手做实际的项目。

最后,scikit-learn是开源项目,有广泛的社区支持,和其他开源库如NumPy, SciPy, Pandas, matplotlib, seaborn, plotly等有良好的集成,可以方便地结合在一起使用。

数据可视化展示库

做机器学习时,往往需要做一些数据分析结果的可视化展示从而让枯燥的数字变得有趣,这就可以用到几个可视化库如Matplotlib、Seaborn 以及 Plotly。

首先,Matplotlib 是 Python 生态中最老牌的可视化库,画图功能超多,从简单的折线图到复杂的3D图表都不在话下。特点是简单、灵活、支持多种图形,科研必备。

其次,Seaborn 库就是基于 Matplotlib 开发的一个统计可视化神器,它不光能画出好看的图,还自带统计功能。特点是易用、美观,专注于统计图形。

最后,Plotly是一个交互式的、开源的绘图库,它支持许多独特的图表类型,覆盖广泛的领域,如统计、金融、地理、科学和三维用例。

如何选择机器学习算法?

scikit-learn社区为机器学习新手提供了一个算法选择指南,我们可以根据现状来做选择题,可以大大提升我们的效率。

从上图可以看出,基于已有数据量和是否做类别预测,进行分支选择,就能知道该怎么玩,有点像所谓的最佳实践指南。

做预测类别,就走分类算法。如果走分类场景时数据没有标签,就走聚类算法。

预测数值,就走回归算法。

进行数据可视化,就走降维算法。

Hello World!

这里我们使用scikit-learn来写个hello world! 这是一个使用降维算法做数据展示的简单示例demo,来自scikit-learn内置的教学用的小型标准数据集:鸢尾花数据集Iris

该数据集包含了 150 个鸢尾花的数据,其中每个数据点都有 4 个特征(萼片长度、萼片宽度、花瓣长度、花瓣宽度)和 3个标签(鸢尾草-setosa、蝴蝶花-versicolor、维吉尼亚鸢尾-virginica,代表鸢尾花的3种类别)。该数据集最初由 R.A. Fisher 在 1936 年发布,目前在sk-learn中用来做机器学习入门,测试分类算法性能 以及 进行数据可视化和降维的练习。这里,我们就在Visual Studio Code中新建一个 hello-sk-learn.ipynb 文件,开始我们的第一个机器学习程序,做一个简单的降维展示。注意:这里我们作为算法使用者,不需要关心其内部原理和实现,仅仅体验怎么用。
首先,我们从sk-learn导入数据集和加载数据集:

from sklearn import datasets # 导入数据集
iris = datasets.load_iris() # 加载数据集print("feature names:", iris.feature_names) # 查看有哪些特征
print("tag names:", iris.target_names) # 查看有哪些标签(类别)

X = iris.data # 特征
y = iris.target # 标签

这里,我们还打印出了特征集 和 标签集,显示如下内容:

feature names: ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
tag names: ['setosa' 'versicolor' 'virginica']

其次,我们从sklearn导入PCA算法(做主成分分析的算法),加载模型,执行数据降维任务(这里是从4个特征降到2个特征):

from sklearn.decomposition import PCA # 导入PCA算法(主成分分析)
pca = PCA(n_components=2) # 加载模型,指定保留两个主要特征
X_r = pca.fit(X).transform(X) # 执行降维

这里的X_r就是降维后的2个主要特征集。可以看到,要做降维,只需要一个fix和transform两个函数调用即可,十分方便!基本的降维算法使用就是这两步了。
最后,为了方便我们直观看到,使用matplotlib进行一个数据展示,将降维后的特征进行可视化,通过定义三种不同的颜色来显示目标标签:

import matplotlib.pyplot as plt
target_names = iris.target_names
colors = ["navy", "turquoise", "darkorange"]
for color, i, target_name in zip(colors, [0, 1, 2], target_names):plt.scatter(X_r[y == i, 0], X_r[y == i, 1], color=color, alpha=0.8, lw=2, label=target_name)
plt.legend(loc="best", shadow=False, scatterpoints=1)
plt.figure()

最终Run起来的结果展示如下图所示:

从上面的点状图可以明显地看到,在接近的特征值下,同一种类的鸢尾花会大致集中在一起。

小结

本文快速搭建了Python机器学习的开发环境,并通过一个简单的降维示例学习了scikit-learn的基本用法,完成了一个hello world程序。

最后,听闻Microsoft在Visual Studio Code中免费开放使用GitHub Copilot,这对于我们开发者来说是真正的好消息!大家都去用起来吧,有机会多多交流哈!

推荐学习

黄佳,《AI应用实战课》(课程)

黄佳,《图解GPT:大模型是如何构建的》(图书)

黄佳,《动手做AI Agent》(图书)

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

好消息,在 Visual Studio 中可以免费使用 GitHub Copilot 了!

前言 今天大姚给大家分享一个好消息,GitHub Copilot 可以免费使用了!在此之前若开发者要使用 GitHub Copilot 需要付费订阅,每月订阅费用起步价为 10 美元,而经过验证的学生、教师和开源项目维护者则可以申请免费使用。今天咱们一起来看看在 Visual Studio 使用 GitHub Cop…

读图数据库实战笔记08遍历与子图

遍历与子图1. 使用熟路构建遍历 1.1. 为了避免把开发遍历和构建应用程序混淆1.1.1. 把遍历的编写和测试与应用程序的开发拆分成了两个独立的操作1.1.2. 在Java代码之外独立开发遍历,然后把它们加入应用程序中1.1.3. 现实情况是,大多数开发人员会同时完成两者,不管使用的是哪…

使用css实现圆形的头像的效果(注:要考虑正方形、长方形情况)

在前端开发中,我们经常需要将用户的头像显示为圆形。这可以通过CSS的 border-radius 属性来实现,该属性允许你设置元素的圆角。当 border-radius 设置为 50% 时,无论图片是正方形还是长方形,都会得到一个圆形的效果。但需要注意,长方形图片被裁剪为圆形时,会显示为椭圆形…

任意尺度图像超分辨率的基准技术分析

任意尺度图像超分辨率的基准技术分析 在计算机视觉领域,超分辨率(SR)一直是一个突出的研究领域。它的目的是从低分辨率(LR)图像重建高分辨率(HR)图像。最近,主要基于学习图像的连续表示的任意尺度图像SR取得了重大进展。 这些方法通常需要在特定范围内(即1.0-4.0)使用…

用于端到端场景图生成的密集关系变换器

用于端到端场景图生成的密集关系变换器 场景图生成旨在捕捉图像中对象之间的详细空间和语义关系,由于标签不完整、长尾关系类别和关系语义重叠,这具有挑战性。现有的基于Transformer的方法要么对对象和谓词采用不同的查询,要么对关系三元组采用整体查询,因此学习低频关系的…

新书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》

由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该书强力解析AI芯片的核心技术开发,内容翔实、知识点新颖、实践性很强、图文并茂。 由清华大学出版社资深编辑赵佳霓老师…

vue3/Nuxt中使用Toast

前言 实在是懒得手写一个toast,于是找了一下。 过程 https://github.com/Maronato/vue-toastification/tree/next vue-toastification这个库很有名,默认是vue2的,如果需要使用vue3,需要在安装时,指定next的tag,比如 pnpm i vue-toastification@next但是这个库的最新版也已…

什么是状态管理,有哪些实现?

概念 “状态管理”是指在应用程序中有效地组织、更新和共享数据的方式。比起数据库和本地之类的持久层,有时我们需要存储一些应用运行过程中的临时数据,其中大部分可能都不会存入数据库。因此,状态这个词还是挺贴切的。比较熟悉的是vue中Pinia提供的状态管理,他是全局可访问…

[计算机网络/Linux] 基于CENTOS7自建DNS服务

序最初的诉求:自建DNS,篡改公开网站的url为自建web服务的url。在使用浏览器进行网上冲浪的时候,我们只需要输入网址即可访问,但是在网络中,网址并不是一个有效的东西,真正起作用的是网址所对应的IP地址,但是IP地址是一堆没有规律的数字,难以记忆、使用,所以就有了DNS服…

[计算机网络] 基于CENTOS7自建DNS服务

序最初的诉求:自建DNS,篡改公开网站的url为自建web服务的url。在使用浏览器进行网上冲浪的时候,我们只需要输入网址即可访问,但是在网络中,网址并不是一个有效的东西,真正起作用的是网址所对应的IP地址,但是IP地址是一堆没有规律的数字,难以记忆、使用,所以就有了DNS服…

systemd[1]: home.mount: Directory /home to mount over is not empty, mounting anyway.

日志显示这些内容说明可能是 fstab 服务自动挂载之前 /home 不为空systemd[1]: home.mount: Directory /home to mount over is not empty, mounting anyway. ░░ Subject: 挂载点不为空 ░░ Defined-By: systemd ░░ Support: http://www.ubuntu.com/support ░░ ░░ 目…

Linux服务器上部署Redis流程

前言 Redis版本7.0.4 服务器版本:Linux CentOS 8.0 64位 1.下载Redis 进入官网找到下载地址 https://redis.io/download 进入到Xshell控制台(默认当前是root根目录),输入wget 将上面复制的下载链接粘贴上,如下命令: wget http://download.redis.io/releases/redis-7.0.4.tar…