Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris vel accumsan lacus. Vivamus non cursus ante, at sodales arcu. Nullam euismod, quam non bibendum iaculis, mauris sapien blandit diam, id elementum dolor nisl vitae urna. Donec vel tincidunt erat. Phasellus lobortis blandit justo nec fermentum. Mauris ac porttitor turpis. Sed vulputate neque nec blandit auctor.
本课程属于人工智能基础课,分为三个部分:Python编程、机器学习和深度学习。
人工智能(AI)是让机器能够像人一样学习和解决问题的一门技术
学习过程包括三个问题:学什么、从哪里学和怎么学。
学什么:学的是决策函数,将输入转化为有意义的输出;.决策函数的任务是将输入数据(如图片)转换为输出结果(如猫或狗的标签。从已有的带有标签的数据集中学习;通过训练数据得到决策函数,即求解机器学习模型。确定学习目标、获取学习数据、选择学习算法——这个过程是人工智能解决问题的一般思路。
哪里学:学习数据来源于训练数据集,包含输入数据和对应的标签。如下图展示的是一对猫和狗的的集合,训练数据以pair的形式存在,每个pair包含一个输入和一个输出标签。
怎样学:求解机器学习模型,学习算法的本质是求解机器学习模型,通过训练数据来更新决策函数中的参数。学习算法需要通过预测值与真实标签的距离来不断调整参数,以优化模型的拟合效果。如下图通过函数拟合
因此,人工智能(Artificial Intelligence)学习是:针对某个任务(Task),利用训练数据(Experience),求解一个学习模型,从而提高该任务的性能(Performance)
首先,人工智能能够处理大规模数据,适应互联网快速发展带来的数据积累。其次,对于复杂问题的求解,人工智能通过机器学习等模型提供解决方案,解决传统规则策略无法处理的问题。再者,人工智能具有自适应性,能够快速适应新数据,具有高度的智能性。与传统的规则方法相比,机器学习方法更为简洁、易于维护,适用于需要大量规则判断或手动调整的问题,以及传统方法难以解决的复杂问题。此外,人工智能模型能自动学习新数据,洞察复杂问题和大量数据。视频还对比了传统方法和机器学习方法的特点,强调了人工智能在现代社会中的重要性及其广泛的应用前景。
传统方法:通过规则和if-else语句解决问题,需要不断更新迭代规则。
机器学习方法:简洁、容易维护,通过收集数据训练模型,评估效果后进行改进。优势:避免过度分析,直接通过新数据训练模型,简化工作流程。
需要大量规则判断或手动调整的问题:适合采用人工智能方法,通过收集历史数据进行学习。
传统方法难以解决的复杂问题:如语音识别等,适合采用黑盒式的机器学习模型解决
外部变化环境大的问题:计算机可以通过新增数据进行学习,适应环境变化。
人工智能在多个领域的可以得到应用。
垃圾邮件过滤:通过邮件内容判断是否为垃圾邮件,常见功能。
目标检测:在图片中检测出人和车辆等目标,常用于交通监控。
股票回归预测:通过历史数据预测股票价格,量化炒股的常见应用。
网络搜索引擎:根据查询关键词返回相关网页,如谷歌和百度。
推荐系统:根据个人历史偏好推荐商品或内容,如京东的为你推荐。
无监督算法:如用户聚类和智能定价,常用于消费券分发和定价。
降维应用:将高维数据降维到低维空间,便于数据可视化和解释。
有些层面已接近甚至超越人类水平,游戏,AICG,语音,作曲...
模式识别与机器学习 Pattern Recognition And Machine Learning-Christopher Bishop-微信读书 对数学能力要求较高
Python语言所需的环境配置包括:编辑器(ide)、解释器(python.exe)和包管理工具
编辑器:编辑器的选择因人而异,在此不做推荐。
解释器:用于运行代码文件,类似于Windows上的EXE文件或mac/linux上的python执行文件。 包管理工具:有conda,anacoda 和miniconda。在此推荐miniconda
Conda是虚拟环境管理工具。它与pipenv,venv等虚拟环境管理工具最大的区别在于,Conda虚拟环境是独立于操作系统解释器环境的,即:无论操作系统解释器什么版本,都可以指定虚拟环境Python版本,而venv是依赖主环境的。Anaconda和Miniconda是Conda的子集。
Anaconda是一个开源的Python发行版本,专注于数据分析。它包含了conda、Python等190多个科学包及其依赖项,使得用户可以便捷地获取和管理这些包,同时提供对环境的统一管理。Anaconda的特点包括:
集成第三方库:Anaconda常用于科学计算领域,集成了许多数据分析库,如pandas、numpy、matplotlib等,可以方便地进行数据分析、机器学习等任务。 虚拟环境管理:使用conda,用户可以创建多个不同的虚拟环境,每个环境可以分隔不同项目所需要的不同版本的包,有效预防版本冲突。 跨平台支持:Anaconda支持Linux、Windows、Mac OS X等多个操作系统,并可以自由切换不同版本的Python。 开源与免费:Anaconda是完全开源和免费的,尽管一些额外的加速和优化功能可能需要付费,但对于学术用途,可以申请免费的License。 因此,对于数据分析的初学者或专业人士来说,Anaconda都是一个非常有用的工具,可以大大提高工作效率和减少配置问题。
Miniconda是Anaconda的轻量版,只包含conda和Python,但没有包含Anaconda中捆绑的科学计算和数据分析用的包。因此,Miniconda的安装包较小,可以节省空间,并且在安装后可以自定义选择安装哪些包。
<a href="Miniconda3-py39_24.11.1-0-Windows-x86_64.exe">miniconda 国内镜像下载地址
安装完成后
conda info则安装成功。
添加清华镜像源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
conda config --set show_channel_urls yespython的虚拟环境可以很好的隔离不同项目版本冲突。
虚拟环境是一个包含第三方完整依赖的Python环境,通常服务于一个项目。conda可以很好的完成依赖管理。
创建一个名字为 tomz_test 的python 3.9 的虚拟环境:
conda create -n tomz_test python=3.9查看已有的版本
conda info --envs激活tomz_test环境:
conda activate tomz_test安装第三方包有两种方式:
在线安装
conda install 包名
pip install 包名conda安装包会自动安装这个包需要的依赖,这会导致使用conda安装包速度会比较慢
pip安装包速度很快,但是有的依赖包不会自动安装
离线安装(适用于特殊需求)
可以在PyPI上搜索并下载所需的whl文件
conda/pip install <whlfile>依赖文件批量安装:requirements.txt
conda/pip install --file requirement.txtJupyter Notebook是一个基于网页的代码编写和文档编辑工具,具有轻量级、即时执行和方便组织代码与文档的特点。它支持代码高亮、缩进、Tab等编写需求,并可通过浏览器直接运行代码。此外,Notebook还支持富媒体嵌入、Markdown文档编写和LaTeX公式编辑等功能。然而,它并不适合大型项目开发,更适合于代码集成要求高、改动频繁的场景。
安装Jupyter Notebook可以通过命令行进行,启动时需在终端中激活对应的虚拟环境。
conda activate tomz_test
conda install jupyter notebookJupyter Lab和Jupyter Notebook功能相同,选择其中一个使用即可。
启动时需注意工作目录的设置,以确保笔记本的工作环境与包管理环境一致。
jupyter notebook新建一个notebook文件,可调试py代码:
可支持markdown编辑
新建一个终端,可打开命令行
Jupyter Lab与Jupyter Notebook
1.Jupyter Lab和Jupyter Notebook功能基本相同,界面和样式略有不同。 2.Jupyter Lab是Jupyter Notebook的升级版本,具有更多功能和更好的扩展性。 3.选择使用哪个工具主要取决于个人喜好和具体需求。
PyCharm是一个强大的Python集成开发环境(IDE),广泛应用于大规模项目开发。相较于Notebook,PyCharm提供了更多的工程性工具,如调试、高亮、管理和提示等。在前期调试实践中,Notebook更为方便。
配置PyCharm项目时,可以选择使用之前配置好的虚拟环境。添加虚拟环境时,选择conda管理的虚拟环境。创建新项目时,选择纯净的PyCharm项目,并指定虚拟环境位置。
下载别人代码后,需要修改虚拟环境位置。通过File->Settings->Project->Python Interpreter来选择虚拟环境。可以选择本地虚拟环境或远程服务器上的虚拟环境。
在设置中修改当前虚拟环境
pycharm 里有很多插件可以用。在ai方面可以安装github Copilot和code gpt
(略)
(略)
NumPy是Python中科学计算的基础包,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等,是计算机科学中关键的数学工具之一。
conda install numpy你也可以在notebook中执行!conda install numpy
NumPy包的核心是 ndarray 对象。它封装了python原生的同数据类型的 n 维数组,为了保证其性能优良,其中有许多操作都是代码在本地进行编译后执行的。
NumPy数组 和 原生Python Array(数组)之间有几个重要的区别:
关于数组大小和速度的要点在科学计算中尤为重要。举一个简单的例子,考虑将1维数组an中的每个元素与相同长度的另一个序列 bn 中的相应元素相乘(两个多维向量相乘)的情况。我们可以迭代每个元素,如下所示:
c = []
for i in range(len(a)):
c.append(a[i]*b[i])而在NumPy中,以近C的速度执行:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a * b
d = a + b
print(c) # [ 4 10 18] 注意返回的是numpy数组ndarray
print(d) # [5 7 9]
说明了NumPy的两个特征,它们是NumPy的大部分功能的基础:矢量化和广播。所做的事情,但是我们期望基于Python的代码具有简单性。的确,NumPy的语法更为简单!
NumPy包的核心是 ndarray 对象。它封装了python原生的同数据类型的 n 维数组,为了保证其性能优良,其中有许多操作都是代码在本地进行编译后执行的。
矢量化描述了代码中没有任何显式的循环,索引等 - 这些当然是预编译的C代码中“幕后”优化的结果。矢量化代码有许多优点,其中包括:
for循环所困扰。广播是用于描述操作的隐式逐元素行为的术语;
一般来说,在NumPy中,所有操作,不仅仅是算术运算,而是逻辑,位,功能等,都以这种隐式的逐元素方式表现,即它们进行广播。此外,在上面的例子中,a并且b可以是相同形状的多维数组,或者标量和数组,或者甚至是具有不同形状的两个数组
使用 np.array() 函数,我们可以将 Python 的列表(list)或元组(tuple)转换成
NumPy 数组。这是最直接的创建方式。
# 从列表创建
list_array = np.array([1, 2, 3])
print("从列表创建的数组:\n", list_array)
从列表创建二维数组
list_2d_array = np.array([[1, 2., 3], [4, 5, 6]])
print("从列表创建的二维数组:\n", list_2d_array)
指定数据类型
typed_array = np.array([1, 2, 3], dtype=np.float16)
print("指定数据类型的数组:\n", typed_array)\
''''
注意事项:
当列表或元组中的元素类型不一致时,NumPy 会尝试将它们转换成一个公共的类型,通常是更宽泛的类型(如整数会被转换为浮点数)。
您可以通过指定 dtype 参数来设置数组元素的数据类型
'''
从元组创建
tuple_array = np.array((1.1, 2.2))
print("从元组创建的数组:\n", tuple_array)
从元组创建二维数组
tuple_2d_array = np.array([(1.1, 2.2, 3.3), (4.4, 5.5, 6.6)])
print("从元组创建的二维数组:\n", tuple_2d_array)
arange 生成数组NumPy 的 arange 函数类似于 Python
的 range 函数,但它返回的是一个数组而不是列表。这个函数在需要创建数值范围时非常有用。
# 创建一个 0 到 11 的数组
arange_array = np.arange(12)
print("使用 arange 创建的数组:\n", arange_array)
创建一个步长为 2 的数组
stepped_array = np.arange(100, 124, 2)
print("步长为 2 的数组:\n", stepped_array)
分段总结
折叠
00:01工具包介绍及学习方案
1.介绍工具包的基本用法,采用分节或分课的形式进行介绍。 2.建议学习者根据需求选择学习内容,可以捡不会的或不太熟悉的内容来看。 3.推荐查漏补缺的学习方式,将工具包介绍当作字典使用。
01:57numpy工具包介绍
1.numpy是一个科学计算的基础工具包,主要用于多维数组下的各种计算。 2.numpy的核心能力是提供多维数组的数学运算、逻辑运算等。 3.numpy在机器学习和深度学习中也扮演重要角色,是矩阵运算和多维数组操作的基础。
04:38numpy与paddle的区别
1.numpy是一个通用的科学计算框架,没有针对机器学习或深度学习做更多适配。 2.paddle是一个针对深度学习做了特定化适配的科学计算框架。 3.numpy的底层逻辑是使用多维数组,与paddle类似但略有区别。
04:53numpy的特点
1.代码简单易写,执行效率高。 2.适用于多维数组的运算,包括一维、二维、三维、四维、五维等。 3.底层由C语言编写,利用C语言的加速特性。
08:54numpy的加速原理
1.numpy的矢量化描述和直接向量乘法避免了显式循环。 2.底层由C语言预编译代码执行,利用C语言的加速便利。 3.代码简洁意味着错误较少,更易于检查和调试。
11:24numpy的安装方法
1.可以通过终端执行pip命令进行安装,需要激活对应的虚拟环境。 2.在notebook中可以直接运行终端命令进行安装,通过添加感叹号实现。
】