Python人工智能入门

人工智能,在发展过程中产生了很多的流派,应用场景众多,因此有多种定义不足为奇,下面给出两种:

人工智能(Artificial Intelligence, AI) ,是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能作为计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。

人工智能是一门融合了计算机科学、统学、脑神经学和社会科学的前沿综合性学科。它的目标是希望计算机拥有像人一样的智力能力,可以替代人类实现识别、认知、分类和决策等多种功能。

人工智能在计算机领域内,得到了愈加广泛的重视。人工智能应用场景:

汽车自动驾驶、人脸识别、自然语言处理、个性化推荐、生命科学、预测与分类场景等。

人工智能简史 

Python3入门人工智能 gitee python人工智能基础_Python

2016年3月,李世石以1∶4比分落败于Alpha Go。2017年5月23日至5月27日,世界冠军柯洁与谷歌Alpha Go对决,柯洁以0∶3败。人工智能发展进入新阶段。

人工智能(Artificial Intelligence)、机器学习(Machine Learning)、深度学习(Deep Learning)关系,见下图:

Python3入门人工智能 gitee python人工智能基础_Python3入门人工智能 gitee_02

深度学习的技术原理是机器从“特定的”大量数据中总结规律,归纳出某些“特定的知识”,然后将这种“知识”应用到现实场景中去解决实际问题。

人工智能的8个有用的日常例子 人工智能的8个有用的日常例子 - 51CTO.COM

人工智能十大流行算法,通俗易懂讲明白人工智能十大流行算法,通俗易懂讲明白_腾讯新闻

下面的两个链接,可以加深了解

人工智能、机器学习和深度学习的联系与区别 小白都能看懂:人工智能、机器学习和深度学习的联系与区别!_腾讯新闻

人工智能应该学什么人工智能应该学什么、怎么学、以及去哪学|图灵|计算机_网易订阅

由此可知,人工智能是个宽泛的目标,知识量庞大难度较高,因此得将目标拆分成阶段性目标才易于执行。数学(高等数学、线性代数、概率论和数理统计等)是不可避免的,但在学习人工智能技术的初期,也并不会遇到非常复杂的数学问题,只需要具有一些线性代数、概率论的基础知识就可以了,可以在学习人工智能技术的过程中,逐渐补齐自己的短板。

人工智能是个数学含量极高的大课题,加之本人学之不精,在此就不展开了,本文仅将介绍使用Python实现人工智能特定领域的简单实践,帮助新手入门尝试。大致步骤:

(1)了解人工智能的一些背景知识,前面提及。

(2)熟悉机器学习工具库。

(3)动手去做一些AI应用实验。

数学建模(Mathematical Modeling)是利用数学方法解决实际问题的一种实践,即通过抽象、简化、假设、引进变量等处理过程,将实际问题用数学方式表达,建立起数学模型,然后运用先进的数学方法及计算机技术进行求解。数学建模可以通俗地理解为运用统计学、线性代数,积分学等数学知识,构建数学模型,通过模型解决问题。

【数学模型(Mathematical Model)是对于一个现实对象,为了一个特定目的,用数学符号、数学式子、程序、图形等对实际课题本质属性的抽象而又简洁的刻画,它或能解释某些客观现象,或能预测未来的发展规律,或能为控制某一现象的发展提供某种意义下的最优策略或较好策略。】

数学建模的流程如下图:

Python3入门人工智能 gitee python人工智能基础_Python_03

在此,举个很简单的例子

这是一个简单的问题, 对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/

参见下图:

Python3入门人工智能 gitee python人工智能基础_Python3入门人工智能 gitee_04

下面是用来可视化身高和体重数据的代码::

# 创建数据集,把数据写入到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()

运行之,参见下图:

Python3入门人工智能 gitee python人工智能基础_Python_05

由此可以看出特征与预测值之间有种近似的线性关系。随着身高的增加,体重也差不多以线性地方式增加。这就意味着可以使用简单的线性模型即可拟合这批数据。

接下来的步骤就是根据给到的数据来拟合线性模型,这个过程也叫做训练。然后通过拟合后的模型去预测身高,这需要引用 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博客 】查看

Python3入门人工智能 gitee python人工智能基础_ci_06

否则,可能安装不成功。

现在可在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]]))

运行之,参见下图:

Python3入门人工智能 gitee python人工智能基础_Python3入门人工智能 gitee_07

【 注意,如果import sklearn,出现“ImportError: DLL load failed while importing _openmp_helpers:拒绝访问”,请以管理员的身份运行IDLE,操作为:单击“开始”找到IDLE右击出现快捷菜单,再单击“更多 >以管理员的身份运行” 菜单命令,参见下图:

Python3入门人工智能 gitee python人工智能基础_Python3入门人工智能 gitee_08

然后,运行程序代码】

特别提醒,本文意在让初学者有个概观以便有个感性了解,有了这些基础,再去学习,应该能减少不少挫折。

附录

Python人工智能库 深度盘点 | 整理了47个Python人工智能库 - 知乎