000-基于sklearn的机器学习入门:工作环境搭建与配置

news2024/11/14 0:49:50

本专栏将介绍基于Scikit-learn(简称sklearn)的机器学习入门知识。包括但不一定限于,机器学习基本知识、sklearn库简介,基于Sklearn库的机器学习实践。

这是本专栏的第000篇,将介绍如何安装和配置sklearn环境,不仅包括Sklearn库的安装和配置,还包括本教程所用的Python开发环境——Jupyterlab软件的安装配置。

目录

0.1 sklearn简介

0.2 sklearn 的安装与配置

0.3 其他工具安装与配置

0.3.1 Jupyterlab的安装与配置

(1)安装Jupyterlab

(2)配置Jupyterlab

0.1 sklearn简介

sklearn (全称 scikit-Learn) 是一个基于 Python 语言的机器学习工具,更准确的说,它是一个专用于机器学习的Python扩展库。它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,里面的 API 的设计非常好,所有对象的接口简单,很适合新手上路。

在sklearn 里面有六大任务模块:分别是分类(Classification)、回归(Regression)、聚类(Clustering)、降维(Dimensionality reduction)、模型选择(Model selection)和预处理(Preprocessing),如下图从其官网的截屏。目前最新版本为1.15(update to 2024-06)

sklearn六大功能模块(图像来自官网)

下面从功能、应用及主要方法等方面,对这六个模块简要说明:

(1)各模块功能说明

预处理

功能:特征提取和归一化。
应用:将输入数据转换为机器学习算法适用的格式
算法:预处理、特征提取等

模型选择

功能:比较、验证和选择参数和模型。
应用:通过参数调整提高精度。
算法:网格搜索、交叉验证、度量等

分类

功能:识别对象属于哪一类(对应离散量)。
应用:垃圾邮件检测,图像识别。
算法:梯度增强、最近邻、随机森林、逻辑回归等

回归

功能:预测与对象关联的连续值属性。
应用:药物反应,股票价格。
算法:梯度增强、最近邻居、随机森林、山脊(ridge)等等

聚类

功能:无监督方法,将相似的对象自动分组到集合中。
应用:客户细分,分组实验结果。
算法:k-Means、HDBSCAN、层次聚类等

降维

功能:减少要考虑的随机变量的数量。
应用:可视化,提高效率。
算法:主成分分析(PCA)、特征选择、非负矩阵分解(NMF)等。

0.2 sklearn 的安装与配置

前面提到,sklearn库是scipy的一个扩展库,即sklearn会大量调用scipy库中的函数直接使用,因此,如果想正常使用sklearn,则scipy是必需提前安装的。

另外scipy库调用了numpy中的函数完成基本的数值计算,又调用了matplotlib中的函数完成绘图功能,因此,numpy和matplotlib也是必需提前安装的。

以下是这三个库功能的简要介绍:

  • Numpy(Numerical Python的缩写)是一个开源的Python科学计算库。在Python中虽然提供了list容器和array模块,但这些结构并不适合于进行数值计算,因此需要借助于Numpy库创建常用的数据结构(如:多维数组,矩阵等)以及进行常用的科学计算(如:矩阵运算)。
  • Scipy库是sklearn库的基础,它是基于Numpy的一个集成了多种数学算法和函数的Python模块。它的不同子模块有不同的应用,如:积分、插值、优化和信号处理等。
  • matplotlib是基于Numpy的一套Python工具包,它提供了大量的数据绘图工具,主要用于绘制一些统计图形,将大量的数据转换成更加容易被接受的图表。

下图可以形象地说明以上各库的调用关系:

sklearn库与numpy,scipy和matplotlib库之间的关系

幸运的是,如果我们通过安装Anaconda来搭建Python运行环境时,上述各库是自动安装好的。简直不要太方便了。

如果不放心,可以打开Anaconda Navigator,找到环境配置选项,选中“Installed”,然后在搜索框中键入“learn”,即可查询到已安装的sklearn库的信息,如下图所示:

Anaconda Navigator中查询sklearn安装情况

大家有没有注意到一个细节,除了提示安装了“scikit-learn”库之外,Anaconda内还预先安装了另外一个库“scikit-learn-intelex”,看说明应该是一个专门为Intel CPU设计的用于sklearn加速的扩展库。实际应用中,并没有专门测试是否使用该库对处理速度的影响,但既然有这个库,还是建议大家优先考虑使用Intel的平台。

当然,如果确实想从纯净的Python环境下从头安装和配置sklearn环境,则建议搜索相关技术帖子。安装步骤一般是:

  1. 1Numpy库
  2. Scipy库
  3. matplotlib库
  4. sklearn库

安装方式也有两种,一种是在线的pip安装,第二种是离线的pip安装,两者的区别在于,后者先将对应版本的whl文件下载到本机指定的路径下再安装。在不能保证外网一直能够保持畅通的情况下,建议采用第二种本地安装方式。在此给出一个常用的用于下载Python扩展库对应的whl文件的下载链接:https://pypi.python.org/pypi。

相关的资料,在网上能够很方便地搜索到,在此不再赘述。

最后再啰嗦几句,如果确实想确认是否已经成功安装sklearn库,则打开Python命令行运行环境,键入以下四行命令:

import numpy
import matplotlib
import scipy
import sklcarn

如果没有任何错误提示,即表示可以正常使用上述各库了。

0.3 其他工具安装与配置

由于本教程专注与机器学习基本理论和方法的sklearn实现,而不是应用,因此不是用任何IDE工具用于代码编辑和调试。在此选用了Jupyter系列中的Notebook和lab作为各类算法的开发和验证。

notebook和lab是Jupyter提供的两种功能强大的工具,两者相比,lab可以看作是notebook的增强版,因此我们最终选用Jupyter lab作为本教程主要的代码编辑工具。

当然,为了学习方便,我会讲文本、公式、图表和代码,都在本教程中一一呈现。大家可将本教程中的资料很方便地转换成Jupyter lab进行发布。

有关Jupyter lab的安装和配置文件,网上教程也很多。为了便于大家查阅,我讲自己在另外一个专栏中有关内容直接复制粘贴过来。

0.3.1 Jupyterlab的安装与配置

(1)安装Jupyterlab

首先安装某些依赖,至于这些依赖不安装有什么影响,说实话,我目前也不清楚。

sudo apt install nodejs npm

接下来,安装libffi-dev,

sudo apt install libffi-dev

接下来,就是本节的主角了,使用pip3安装Jupyterlab

pip3 install jupyter jupyterlab

整个过程较长,经过几分钟的等待,以及终端窗口大段的warning提醒,终于完成了Jupyterlab的安装。一定要先重启机器,目的是让系统自动改写默写Path变量。然后在命令窗口键入jupyter lab,系统会正常启动浏览器,然后就会在默认的路径下创建一个未命名的ipynb文件,并等待编辑。

看到熟悉的notebook的编辑窗口,真是感觉亲切至极。到此算是完成Jupyterlab的基本设置,但这才刚刚开始,还有更多内容等待设置,当然这些设置并不都是必需的,大家可根据个人的编程习惯,自行浏览。

(2)配置Jupyterlab

下面介绍生成Jupyterlab的配置文件,并完成修改的流程。

首先使用以下命令,生成Jupyterlab的配置文件:

jupyter lab --generate-config

可使用编辑命令,修改配置文件:

nano /home/jetson/.jupyter/jupyter_lab_config.py

至于设置内容,可根据个人需要自行确定,不再单独说明。

使用一下语句,添加界面对中文的支持。

pip3 install jupyterlab-language-pack-zh-CN

完成中文包的安装后,即可将Jupyterlab的界面设置为中文。

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

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

相关文章

【QT5】<知识点> IMX6ULL开发板运行QT

目录 1. 安装交叉编译器 2. 命令行交叉编译QT项目 3. 运行该可执行程序 4. 开发板上运行UDP程序与Ubuntu通信 1. 安装交叉编译器 第一步:进入正点原子论坛找到IMX6ULL开发板的资料,下载“开发工具”,将“交叉编译工具”中的fsl-imx-x11-…

Docker引起的漏洞问题

前言 测试环境上的中间件和java应用都是由docker进行部署的,但是因为docker的镜像访问有时候需要外网,由此引发了问题,在docker文件中 /usr/lib/systemd/system/docker.service 原有的配置为,可以看到进行了加密 ExecStart/usr/bin/dockerd --tlsverify --tlscacert/etc/docker…

【PL理论】(19) 函数式语言:更复杂的 let-in 示例 | 作用域 | 静态作用域 vs. 动态作用域

💭 写在前面:本章我们将继续讲解函数式语言,介绍比上一章更复杂的 let-in 示例,进行分析。并讲解作用域,通过例子对比静态作用域和动态作用域的区别。 目录 0x00 复杂的 let-in 示例 0x01 作用域 0x02 静态作用域 v…

EI/CPCI/Scopus会议论文是啥?

EI/CPCI/Scopus会议论文是啥? EI/CPCI/Scopus是学术圈常见的字母缩写了,它们并非某一种期刊或是某一种杂志,而是一种便捷的论文检索工具。它们之间的区别在于,各自涵盖的领域的不同。▌EI (The Engineering Index&…

STM32硬件接口I2C应用(基于MP6050)

目录 概述 1 STM32Cube控制配置I2C 1.1 I2C参数配置 1.2 使用STM32Cube产生工程 2 HAL库函数介绍 2.1 初始化函数 2.2 写数据函数 2.3 读数据函数 3 认识MP6050 3.1 MP6050功能介绍 3.2 加速计测量寄存器 ​编辑3.3 温度计量寄存器 3.4 陀螺仪测量寄存器 4 MP60…

openlayers 绘图功能,绘制多边形,draw组件的使用,一个简单的需求引发的思考(二)

上一篇是使用openlayers原生实现的,这一节使用vue3-openlayers实现(有轮子真好) 1 需求 使用openlayers绘图功能绘制多边形 2 分析 主要是openlayers中draw功能的使用 3 实现 为了方便,就不加载底图了,直接使用绘制功能 2.1 简单实现 …

ttkbootstrap的icon图标自定义

前言 在使用ttkbootstrap库时,发现icon参数使用报错,错误代码 root ttk.Window(themename"superhero",size(1400, 700),resizable(True, True),iconphoto"1.png" )结果报错:iconphoto path is bad; using default ima…

AC/DC电源模块的原理、特点以及其在实际应用中的重要性

BOSHIDA AC/DC电源模块的原理、特点以及其在实际应用中的重要性 AC/DC电源模块是一种用于将交流电转换为直流电的设备,广泛应用于各种电子设备中。这种电源模块可以有效地将电力从电网中提取出来,并将其转换为稳定的直流电源,供给各种不同功…

【短剧看剧系统之投流版】短剧看剧系统功能更新,前端uniapp搭建开发

目录 一、常规款短剧系统和投流版的区别? 二、后端体系 1.管理端: 2.代理投流端 三、功能区别 总结: 前言: 短剧看剧系统目前在抖音端是比较热门的,最重要的功能就是可以接入第三方cps,包含类目报白…

万众瞩目的苹果AI来了,但我们用不了

关注卢松松,会经常给你分享一些我的经验和观点。 从今天开始,最了解你的不是你老婆,不是你自己,而是苹果AI。 万众瞩目的苹果WWDC24开发者大会在大半夜举办了,其中一项重要的更新是:苹果宣布要把ChatGPT集…

MES系统定制 | 生产调度车间排班计划/MES排程排产

MES系统是一种集成化的生产信息化管理系统,通过实时收集和分析车间生产数据,帮助企业实现生产过程的自动化控制和监测。它可以跟踪生产计划、设备状态、物料流动等关键指标,并提供实时报表和决策支持。在这个系统中,车间班次排班是…

零基础直接上手java跨平台桌面程序,使用javafx(五)TableView显示excel表

我们在窗口的中间加上TableVie: 在hello-view.fxml的文本中,要增加一些代码。在TableView定义中加上fx:id"TableView1",这样java代码才方便访问,在java代码中要加上FXML private TableView TableView1;表示定义TableVie…

如何禁止使用U盘|禁止使用U盘的四个方法

你知道U盘滥用对企业的危害,总接下来有这三点: 数据泄露:U盘可以方便地存储和传输大量数据,但如果U盘丢失或被盗,其中的数据可能会被他人获取,从而导致数据泄露。病毒传播:U盘是病毒传播的常见途径之一。如…

基于若依的ruoyi-nbcio-plus里抄送人多页选择人员的bug修复

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…

点云技术在AI绘画中的革新性应用

引言: 随着人工智能的不断演进,艺术与科技的交融催生了AI绘画这一全新的创作方式。AI绘画不仅为艺术家提供了前所未有的工具,也拓展了艺术表达的边界。在这一进程中,点云技术作为一种重要的三维数据处理手段,其在AI绘画…

深入解析:常用的IP地址类型及其应用

随着互联网的日益发展,IP地址已经成为了我们日常生活中不可或缺的一部分。无论是浏览网页、发送邮件,还是进行在线视频通话,都离不开IP地址的参与。然而,对于许多非专业人士来说,IP地址的分类及其应用可能还是一个相对…

1502 - JUC高并发

慢慢挣,今天比昨天更有钱,明天比今天有钱,后天比明天有钱。 0.思维导图 6.多线程锁 synchronized实现同步的基础:Java中的每一个对象都可以作为锁。 具体表现为以下3中形式 对于普通同步方法,锁是当前实例对象。对于…

Python 基础001 pythonpycharm安装

1 安装python 尽量在官网安装 根据电脑情况下载,下载完需要重启电脑 python安装路径自定义 添加环境变量(add path)需要勾选,若无勾选,手动更新环境变量 确认python是否安装成功: 方法一:有安装成功&am…

零基础直接上手java跨平台桌面程序,使用javafx(六)查询sqlite数据显示到TableView中

我们使用jdbc查询sqlite的一个表显示到TableView中 在hello-view的onMouseClicked里面填上“openclick2”,然后在HelloController写上openclick2的相关代码FXML protected void openclick2() { }。我们要先配置好sqlite的jdbc驱动(略)。openc…

代码随想录算法训练营第二十九天【回溯】| 491,46,47

491. Non-decreasing Subsequences 排列用startindex 树枝不去重,树层去重 子集问题结果在结点(个数>2) class Solution(object):def findSubsequences(self, nums):""":type nums: List[int]:rtype: List[List[int]]&…