Python人工智能入门
人工智能,在发展过程中产生了很多的流派,应用场景众多,因此有多种定义不足为奇,下面给出两种:
人工智能(Artificial Intelligence, AI) ,是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能作为计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。
人工智能是一门融合了计算机科学、统学、脑神经学和社会科学的前沿综合性学科。它的目标是希望计算机拥有像人一样的智力能力,可以替代人类实现识别、认知、分类和决策等多种功能。
人工智能在计算机领域内,得到了愈加广泛的重视。人工智能应用场景:
汽车自动驾驶、人脸识别、自然语言处理、个性化推荐、生命科学、预测与分类场景等。
人工智能简史
2016年3月,李世石以1∶4比分落败于Alpha Go。2017年5月23日至5月27日,世界冠军柯洁与谷歌Alpha Go对决,柯洁以0∶3败。人工智能发展进入新阶段。
人工智能(Artificial Intelligence)、机器学习(Machine Learning)、深度学习(Deep Learning)关系,见下图:
深度学习的技术原理是机器从“特定的”大量数据中总结规律,归纳出某些“特定的知识”,然后将这种“知识”应用到现实场景中去解决实际问题。
人工智能的8个有用的日常例子 人工智能的8个有用的日常例子 - 51CTO.COM
人工智能十大流行算法,通俗易懂讲明白人工智能十大流行算法,通俗易懂讲明白_腾讯新闻
下面的两个链接,可以加深了解
人工智能、机器学习和深度学习的联系与区别 小白都能看懂:人工智能、机器学习和深度学习的联系与区别!_腾讯新闻
人工智能应该学什么人工智能应该学什么、怎么学、以及去哪学|图灵|计算机_网易订阅
由此可知,人工智能是个宽泛的目标,知识量庞大难度较高,因此得将目标拆分成阶段性目标才易于执行。数学(高等数学、线性代数、概率论和数理统计等)是不可避免的,但在学习人工智能技术的初期,也并不会遇到非常复杂的数学问题,只需要具有一些线性代数、概率论的基础知识就可以了,可以在学习人工智能技术的过程中,逐渐补齐自己的短板。
人工智能是个数学含量极高的大课题,加之本人学之不精,在此就不展开了,本文仅将介绍使用Python实现人工智能特定领域的简单实践,帮助新手入门尝试。大致步骤:
(1)了解人工智能的一些背景知识,前面提及。
(2)熟悉机器学习工具库。
(3)动手去做一些AI应用实验。
数学建模(Mathematical Modeling)是利用数学方法解决实际问题的一种实践,即通过抽象、简化、假设、引进变量等处理过程,将实际问题用数学方式表达,建立起数学模型,然后运用先进的数学方法及计算机技术进行求解。数学建模可以通俗地理解为运用统计学、线性代数,积分学等数学知识,构建数学模型,通过模型解决问题。
【数学模型(Mathematical Model)是对于一个现实对象,为了一个特定目的,用数学符号、数学式子、程序、图形等对实际课题本质属性的抽象而又简洁的刻画,它或能解释某些客观现象,或能预测未来的发展规律,或能为控制某一现象的发展提供某种意义下的最优策略或较好策略。】
数学建模的流程如下图:
在此,举个很简单的例子:
这是一个简单的问题, 对20岁男子通过身高预测标准体重
下表是通过调查研究发现正常男生20岁时标准体重
身高 | 体重 |
152 | 51 |
156 | 53 |
160 | 54 |
164 | 55 |
168 | 57 |
172 | 60 |
176 | 62 |
180 | 65 |
184 | 69 |
188 | 72 |
任务是:依据身高预测身高。
在这个例子中需要引入两个第三方库numpy和Matplotlib
numpy库
NumPy (Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
【NumPy 通常和 Matplotlib(绘图库)一起使用】
NumPy 官网文档Overview — NumPy v1.21 Manual
NumPy 用户指南中文 NumPy 用户指南 | NumPy 中文
Matplotlib库
Matplotlib是一个Python 2D绘图库,您只需几行代码就可以生成图表,直方图,功率谱,条形图,误差图,散点图等。
Matplotlib 官网:Matplotlib — Visualization with Python
Matplotlib中文网 Matplotlib 中文
安装库numpy 和matplotlib
【安装库,打开cmd输入:
pip install 库名
若你的电脑上,安装了多个版本的python,想为指定版本如-3.10安装库
py -3.10 -m pip install 库名
详见Python第三方模块(库、包)安装、卸载与查看及常见问题解决_cnds123的专栏-CSDN博客_python卸载第三方库 】
使用阿里云镜像站 -i https://mirrors.aliyun.com/pypi/simple/ ,在cmd中输入:
py -3.10 -m pip install numpy -i https://mirrors.aliyun.com/pypi/simple/ ,然后回车(即按下Enter键)
py -3.10 -m pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple/
参见下图:
下面是用来可视化身高和体重数据的代码::
# 创建数据集,把数据写入到numpy数组
import numpy as np # 引用numpy库,主要用来做科学计算
import matplotlib.pyplot as plt # 引用matplotlib库,主要用来画图
data = np.array([[152,51],[156,53],[160,54],[164,55],
[168,57],[172,60],[176,62],[180,65],
[184,69],[188,72]])
# 打印出数组的大小
print(data.shape)
# 从data中提取出身高和体重,分别存放在x, y变量中
x, y = data[:,0].reshape(-1,1), data[:,1]
# 在二维空间里画出身高和体重的分布图
plt.scatter(x, y, color='black')
plt.xlabel('height (cm)')
plt.ylabel('weight (kg)')
plt.show()
运行之,参见下图:
由此可以看出特征与预测值之间有种近似的线性关系。随着身高的增加,体重也差不多以线性地方式增加。这就意味着可以使用简单的线性模型即可拟合这批数据。
接下来的步骤就是根据给到的数据来拟合线性模型,这个过程也叫做训练。然后通过拟合后的模型去预测身高,这需要引用 sklearn库。
sklearn库
scikit-learn (sklearn) 官方文档中文版 https://sklearn.apachecn.org/#/
sklearn是scikit-learn的简称,是一个基于Python的第三方模块。sklearn库集成了一些常用的机器学习方法,在进行机器学习任务时,并不需要实现算法,只需要简单的调用sklearn库中提供的模块就能完成大多数的机器学习任务。
特别提示:sklearn库安装比较特别,容易出现意外,请注意下面细节。
Scipy库是sklearn库的基础,Scipy又基于Numpy库。
Numpy库安装后,就可以安装Scipy库
在cmd中输入:
py -3.10 -m pip install Scipy -i https://mirrors.aliyun.com/pypi/simple/
安装sklearn库之前,建议使用“Microsoft C++ 生成/构建工具(Build Tools)”【 参见Microsoft C++ 生成/构建工具(Build Tools)和安装软件时提示“Microsoft Visual C++ 14.0 is required.”的解决_cnds123的专栏-CSDN博客 】查看
否则,可能安装不成功。
现在可在cmd中输入:
py -3.10 -m pip install scikit-learn -i https://mirrors.aliyun.com/pypi/simple/
在下面的代码中,我们是把线性回归当成了黑箱子来对待的——用sklearn中现有的模型实现的。用sklearn中现有的模型实现标准体重预测的源码如下:
from sklearn import datasets, linear_model # 引用 sklearn库,主要为了使用其中的线性回归模块
# 创建数据集,把数据写入到numpy数组
import numpy as np # 引用numpy库,主要用来做科学计算
import matplotlib.pyplot as plt # 引用matplotlib库,主要用来画图
data = np.array([[152,51],[156,53],[160,54],[164,55],
[168,57],[172,60],[176,62],[180,65],
[184,69],[188,72]])
# 打印出数组的大小
print(data.shape)
x=data[:,0].reshape(-1,1)
y=data[:,1].reshape(-1,1)
# TODO 1. 实例化一个线性回归的模型
regr = linear_model.LinearRegression()
# TODO 2. 在x,y上训练一个线性回归模型。 如果训练顺利,则regr会存储训练完成之后的结果模型
regr.fit(x,y)
# TODO 3. 画出身高与体重之间的关系
plt.scatter(x, y, color='blue')
# 画出已训练好的线条
plt.plot(x, regr.predict(x), color='blue')
# 画x,y轴的标题
plt.xlabel('height (cm)')
plt.ylabel('weight (kg)')
plt.show() # 展示
# 利用已经训练好的模型去预测身高为163的人的体重
print ("Standard weight for person with 163 is %.2f"% regr.predict([[163]]))
运行之,参见下图:
【 注意,如果import sklearn,出现“ImportError: DLL load failed while importing _openmp_helpers:拒绝访问”,请以管理员的身份运行IDLE,操作为:单击“开始”找到IDLE右击出现快捷菜单,再单击“更多 >以管理员的身份运行” 菜单命令,参见下图:
然后,运行程序代码】
特别提醒,本文意在让初学者有个概观以便有个感性了解,有了这些基础,再去学习,应该能减少不少挫折。
附录
Python人工智能库 深度盘点 | 整理了47个Python人工智能库 - 知乎