人工智能-Python基础-导学-01

        人工智能越来越火,而Python作为流行编程语言,也备受关注。那么我们学习人工智能的时候,网上都推荐先去学python吧,它是基础,那Pyhon在这个人工智能学习过程中究竟能干啥,我学python的各个知识点到时候用在哪里,我要知道我学的东西,它能用上!

今天,就讲解一下,Python在人工智能项目中用在哪里,能起什么作用。

目录

1.Python各个知识点的具体作用

1.变量和数据类型

2.条件判断(if-else):做选择的“开关”

3.循环(for/while):重复劳动的“打工人”

4.函数:打包好的“微波炉”

5.列表/字典/字典:数据的“收纳盒”

6.文件操作:数据的“快递员”

7.类和对象(OOP):代码的“乐高说明书”

8.库(Library):别人写好的“工具箱”

2.小结


1.Python各个知识点的具体作用

1.变量和数据类型

(1)变量是啥?数据类型是啥?

       变量是程序中用于存储数据的容器(就好比你家里放东西的盒子,每个盒子都能装不同的东西,在程序里这个“盒子”就是变量,用来装数据哒),在程序运行过程中,变量的值可以被修改。

变量
# 定义一个存储整数的变量
age = 28
# 定义一个存储字符串的变量
name = "Alice"

        咱就想象一下,你有好多小盒子,每个盒子上都贴了个标签。有个盒子标签写着 “age”,你就把 “28” 这个数字当作小纸条塞到这个盒子里,这就代表这个人的年龄是 28 岁啦。还有个盒子标签是 “name”,你把写着 “Alice” 的纸条放进去,这个盒子就存着名字信息咯。而且呀,要是这个人年龄变了,或者名字改了,你还能打开盒子把里面的纸条换成新的内容,这就是变量的值能修改的意思。在编程里,你只要说 “age” 或者 “name”,程序就知道你说的是哪个盒子里的东西啦。

变量在AI中的应用

        变量就像管家一样到处帮忙。比如说训练神经网络,这就跟教一个超级聪明的小孩学习新知识差不多。在这个过程中,有好多东西都得存起来,就需要用到变量。就拿图像识别来说吧,图像就像一堆密密麻麻的小点点组成的图案,这些小点点的信息就是像素值,我们用变量把这些像素值存起来,就好像把小孩学习用的课本内容存好了,然后把这些 “课本内容” 喂给神经网络这个 “小孩”,它就能慢慢学会怎么识别各种图像啦。


        数据类型规定了变量所能存储的数据的种类和格式(简单来说,就是不同的“盒子”有不同的形状和用途,只能装特定类型的东西,在编程里就是不同的数据类型的变量能装不同类型的数据),不同的数据类型有不同的操作和处理方式。

数据类型
# 整数类型
number = 10
# 浮点数类型
price = 9.99
# 字符串类型
message = "Hello, World!"
# 布尔类型
is_valid = True
  • 整数类型的盒子就像那种方方正正的小格子,只能装像 1、2、3 这种没有小数点的整数,要是你想放个带小数点的数进去,就像把一个大圆球硬塞进小方格子,肯定不行。
  • 浮点数类型的盒子就稍微大一点、形状更灵活,能装像 9.99 这种带小数点的数字。
  • 字符串类型的盒子就像一个小本子,你可以在上面写各种文字,像 “Hello, World!” 这样的句子都能写进去。
  • 布尔类型的盒子就像一个只有两个状态的开关盒,里面要么是开着的状态(True),要么是关着的状态(False),就这么两种情况。
  • 而且不同类型的盒子,处理它们里面东西的方法也不一样,比如整数盒子里的数能直接做加减乘除,字符串盒子里的文字能做拼接、查找之类的操作。

 在AI中的实践应用

        在人工智能里,不同的数据类型就像不同的工具,各有各的用处。整数和浮点数就像小算盘,能用来记录一些数量和数值,比如图像的尺寸大小、模型的参数数值等,这些数字信息对模型学习很重要。字符串就像小纸条,能把一些文字说明记录下来,在自然语言处理中,句子、单词这些文字信息都用字符串存起来,让模型学习理解人类的语言。布尔类型就像小裁判,能决定程序下一步该干啥,比如判断某个条件是不是成立,像判断图片是不是符合某种要求,根据判断结果决定要不要对图片做进一步处理。

2.条件判断(if-else):做选择的“开关”

(1)判断语句是啥?

        条件语句根据条件的真假来决定执行哪一段代码(就好比你去做选择,会根据不同的情况来决定下一步干啥,在程序里就是根据条件是真还是假来决定运行哪部分代码),实现程序的分支逻辑,使得程序可以根据不同的情况做出不同的响应。

score = 85
if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
else:
    print("继续努力")

        咱就想象你考试出成绩了,程序就像一个裁判,根据你的分数来给你评价。裁判先看你的分数是不是大于等于 90 分,如果是,就会说 “优秀”;要是不是,它接着看是不是大于等于 80 分,如果是,就说 “良好”;要是这两个条件都不满足,它就会说 “继续努力”。这就跟你生活里做选择一样,不同的情况有不同的处理办法,在程序里就是不同的条件对应不同的代码块。

(2)AI里能干啥:

判断识别结果:

`if识别为猫:播放喵叫else:提示错误`;

控制训练流程:`if准确率>90%:停止训练`。

 在人工智能模型训练的时候,条件语句就像一个指挥官。

比如说,在训练过程中,模型会不断地计算损失值,这个损失值就像模型犯错的程度。指挥官会看这个损失值是不是小于某个设定的标准,如果小于了,就说明模型学得差不多了,就可以让训练停下来,不用再继续浪费时间啦。

在处理不同的数据集时,数据集可能有不同的特点,指挥官可以根据这些特点来选择不同的预处理方法,就像给不同的小朋友安排不同的学习方法一样。

3.循环(for/while):重复劳动的“打工人”

(1)循环是啥?

        循环语句用于重复执行一段代码(就像你要做一件重复的事情,比如数豆子,一颗一颗地数,数完一遍又接着数,在程序里就是让一段代码反复运行),直到满足特定的条件为止,可分为for循环和while循环。

# for循环
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

# while循环
num = 1
while num <= 5:
    print(num)
    num = num + 1

        for循环:你有一个水果清单,上面写着苹果、香蕉、樱桃。for循环就像你拿着这个清单,一个一个地念出清单上的水果名字。每念一个水果,就相当于执行一次循环里的代码,这里就是把水果名字打印出来。念完清单上所有的水果,循环就结束了。

  while循环:就像你数星星。一开始你从 1 开始数,只要数的数字小于等于 5,你就一直数下去,每数一个数字,就把这个数字打印出来,然后接着数下一个数字。直到数到 6 了,不满足 “小于等于 5” 这个条件了,就不数了,循环也就结束了。

(2)AI里能干啥:

for循环:遍历所有图片,统一调整大小。

while循环:一直训练模型,直到达到目标精度。

例子:用`for图片in1000张图:`批量给图片打标签。

for循环就像一个勤劳的工人,它会一个一个地把训练数据集中的样本拿出来,喂给模型去学习。比如有一堆图片要让模型学习识别,for循环就会一张一张地把图片拿给模型看,让模型不断地学习图片的特征。

while循环就像一个闹钟,它会控制训练的轮数。比如设定好要训练 10 轮,只要还没达到 10 轮,while循环就会一直让模型继续训练,直到达到 10 轮这个条件,训练就停止啦。

4.函数:打包好的“微波炉”

(1)函数是啥?

        函数是一段具有特定功能的、可重复使用的代码块(就像一个小魔法盒子,你给它一些东西,它就能变出你想要的结果,而且这个盒子可以反复使用),通过输入参数来完成特定的任务,并可以返回一个结果。  把常用操作封装成“一键按钮”,随用随调。

def add(a, b):
    return a + b

result = add(3, 5)
print(result)

咱们把函数想象成一个工厂。你给这个工厂两个原材料,比如 3 和 5,这个工厂就会按照它内部的流程,把这两个原材料加起来,然后生产出一个新的产品 8 。你只要把原材料(参数)给它,它就能给你做出产品(返回值)。而且这个工厂可以一直用,你下次再给它不同的原材料,比如 2 和 7,它又能做出新的产品 9 。在编程里,你定义了一个函数,就相当于建好了这个工厂,以后需要做同样的事情,就直接调用这个函数就行啦。

(2)AI里能干啥?

预处理数据:写个`清洗数据()`函数,去噪声、标准化。

封装模型:`训练模型()`函数里塞入训练代码。

例子:每次训练前调用`load_data()`函数,自动加载数据集。

在人工智能项目里,函数就像一个个帮手。比如说,在训练模型的时候,需要计算模型的准确率、损失值这些评估指标。你可以定义一个函数专门来做这个计算,就像建了一个专门计算评估指标的工厂。每次训练完模型,都可以调用这个函数,把模型的预测结果和真实结果作为原材料给它,它就能算出准确率和损失值。这样就不用每次都重新写计算的代码,提高了代码的复用性和可维护性。

还有数据预处理的时候,像把数据归一化、标准化这些操作,也可以写成函数,需要处理数据的时候就调用这些函数,很方便。

5.列表/字典/字典:数据的“收纳盒”

  • 列表(List):是一种可变的、有序的数据集合(就像一个可以随意增减内容的购物清单,清单上的东西是按顺序排好的,你能随时在上面加东西或者去掉东西),可以存储不同类型的数据,通过索引访问元素。像排队买奶茶的队伍,按顺序存数据。
  • 元组(Tuple):是一种不可变的、有序的数据集合(好比一个密封的盒子,一旦把东西放进去封好,里面的东西就不能再改变了,但东西在里面还是有顺序的,你能按顺序查看里面有啥),同样可以存储不同类型的数据,通过索引访问元素。像钥匙配锁,用名字快速找数据。
  • 字典(Dictionary):是一种无序的数据集合(就像一个有好多抽屉的柜子,抽屉之间没有固定的顺序),由键 - 值对组成(每个抽屉都有个独一无二的标签,这个标签就是键,抽屉里放的东西就是值),键是唯一的,通过键来访问对应的值。
# 列表
fruits = ["apple", "banana", "cherry"]
# 元组
coordinates = (10, 20)
# 字典
student = {"name": "Bob", "age": 20, "grade": "A"}

列表:你去超市买东西,会列个清单,上面写着苹果、香蕉、樱桃。要是你突然又想吃葡萄了,就可以在清单后面加上 “葡萄”;要是不想买香蕉了,就把它从清单上划掉。而且你去超市拿东西的时候,是按照清单上的顺序一个一个拿的,这就是列表能随意增减内容还能按顺序访问元素的意思。

元组:就像你把两个重要的数字,像坐标 10 和 20,写在纸条上放进一个密封的盒子里。以后不管啥情况,你都不能再去打开盒子改这两个数字了,但你可以打开盒子看看里面的坐标是多少,这就是元组不能改变里面元素,但能按顺序查看的意思。

字典:像家里的抽屉柜子。每个抽屉都有个特别的名字,比如有个抽屉叫 “name”,你在里面放了写着 “Bob” 的纸条;有个抽屉叫 “age”,你放了写着 “20” 的纸条。你只要知道抽屉的名字,就能马上拉开抽屉找到里面的东西,这就是字典通过键能快速找到对应值的意思。

在AI中应用:

在图像分类任务里,列表就像一个装着好多图片名字的大清单。我们要处理很多图片,就把这些图片的文件名都列在列表里,然后按照列表的顺序一张一张地去处理图片,方便又有条理。

元组就像一些固定的规则。比如模型输入图片的尺寸,一旦确定了就不能随便改,用元组把这个尺寸信息存起来,就不会不小心被改乱了。

字典就像一个信息宝库。在训练模型的时候,有很多配置信息,像学习率、优化器类型这些,就可以用字典存起来,每个信息都有个对应的名字(键),要用的时候通过名字就能快速找到。而且在给图片打标签的时候,也可以用字典把图片和对应的标签信息存起来,方便查找和使用。

6.文件操作:数据的“快递员”

(1)文件是啥?读写电脑里的文件(图片、文本、模型)。

     文件操作是指对计算机中的文件进行读取、写入、修改等操作(就像你和文件这个 “小本子” 交流,你可以在上面写东西,也可以把上面写的东西读出来,还能修改里面的内容),Python 提供了内置的函数和方法来实现这些操作。

# 写入文件
with open('test.txt', 'w') as file:
    file.write('Hello, World!')

# 读取文件
with open('test.txt', 'r') as file:
    content = file.read()
    print(content)

咱们把文件想象成一个小本子。当你用with open('test.txt', 'w') as file这行代码的时候,就像你打开了这个小本子,并且告诉它你要往上面写东西('w'就是写的意思)。然后用file.write('Hello, World!'),就像你拿起笔在小本子上写下了 “Hello, World!” 这句话。

当你用with open('test.txt', 'r') as file的时候,还是打开这个小本子,不过这次是告诉它你要读里面的内容('r'就是读的意思)。接着用file.read(),就像你把小本子上的字一个一个读出来,然后把读出来的内容存到content这个变量里,最后把内容打印出来。with语句就像一个保镖,保证你用完小本子后,会把它好好合上,不会出问题。

(2)AI里能干啥?

加载数据集:`数据=读取("猫狗图片.zip")`。

保存训练好的模型:`模型.save("猫狗识别器.pth")`。

例子:训练完的AI模型保存成文件,下次直接调用。

在数据预处理阶段,就像你要给模型准备好吃的 “食物”,这些 “食物” 可能就存放在文件里,比如 CSV 文件、JSON 文件等。你得用文件操作把这些文件里的数据读出来,然后进行清洗、转换等处理,让数据变得适合模型吃。

训练好的模型就像一个学会了很多本领的宝贝,你得把它保存到文件里,这样以后想用的时候就能直接拿出来用,常见的模型保存格式有.pth(PyTorch)、.h5(Keras)等。

你还可以把模型训练的日志、评估结果这些信息写进文件里,就像给宝贝写成长日记一样,方便以后查看和分析。

7.类和对象(OOP):代码的“乐高说明书”

(1)类和对象是啥?  用“模板”批量造功能相似的代码块。

  • 类:类是一种用户自定义的数据类型(就像你自己设计了一个制作某种玩具的模具,这个模具规定了玩具的样子和功能),它是对具有相同属性和方法的对象的抽象描述。
  • 对象:对象是类的实例(就是用你设计的模具制作出来的具体的玩具,每个玩具有自己的特点,但都是按照模具的样子做出来的),是根据类创建出来的具体实体,每个对象都有自己的属性和行为。
class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def bark(self):
        print(f"{self.name} is barking!")

# 创建对象
my_dog = Dog("Buddy", 3)
print(my_dog.name)
my_dog.bark()

:你想象自己是个玩具设计师,设计了一个 “狗玩具” 的模具。这个模具规定了狗玩具有名字和年龄这两个特点(属性),还规定了狗玩具能 “汪汪叫”(方法)。这个模具就是类,它只是一个设计蓝图,还不是具体的玩具。

对象:你用这个模具做出了一个具体的狗玩具,给它取名叫 “Buddy”,年龄设为 3 岁。这个具体的狗玩具就是对象,它有自己的名字和年龄,还能 “汪汪叫”。你可以通过这个对象的名字(my_dog)来访问它的属性(像my_dog.name就能知道它叫 “Buddy”),也可以让它执行行为(像my_dog.bark()它就会 “汪汪叫”)。

(2)AI里能干啥:

定义神经网络:`class神经网络:`包含各层结构。

创建多个模型:`模型1=神经网络();模型2=神经网络()`。

例子:像组装乐高一样,用类快速搭建不同结构的AI模型。

很多深度学习框架里的模型、层、优化器等都是用类来实现的。比如说,在 PyTorch 里,你要自定义一个神经网络模型,就需要定义一个类,这个类就像你设计的模具,规定了模型的结构和前向传播的方法。然后通过这个类创建出具体的模型对象,就像用模具做出了具体的玩具。每个模型对象都可以有自己的参数,你可以对这个对象进行训练和评估,就像给玩具赋予不同的能力和测试它的表现一样。

8.库(Library):别人写好的“工具箱”

(1)库是啥?直接用的现成代码,比如`numpy`算数学,`opencv`处理图片。

        库是一组预先编写好的函数、类和变量的集合(就像一个超级大的工具包,里面有各种各样已经做好的工具,你不用自己再去做这些工具,直接从包里拿出来用就行),用于实现特定的功能,开发者可以直接调用库中的代码来完成任务,而不需要自己从头开始编写。

# 使用NumPy库进行数值计算
import numpy as np
arr = np.array([1, 2, 3])
print(arr)

# 使用Pandas库进行数据处理
import pandas as pd
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
df = pd.DataFrame(data)
print(df)

# 使用Matplotlib库进行数据可视化
import matplotlib.pyplot as plt
x = [1, 2, 3]
y = [4, 5, 6]
plt.plot(x, y)
plt.show()

咱把库想象成一个装满了各种神奇工具的大箱子。比如说你要盖房子,这个箱子里有现成的锤子、锯子、螺丝刀啥的,你不用自己再去打造这些工具,直接从箱子里拿出来就能用。在编程里,这个大箱子就是库,里面的锤子、锯子就相当于函数、类和变量。

 NumPy 库就像是一个专门装数学工具的小格子。你想处理一些数字,比如把一组数字变成一个数组,就可以直接用 NumPy 里的 array 这个工具,就像你直接从装数学工具的小格子里拿出一个专门能把数字变成数组的神奇道具,一下子就把数字变成数组啦。

Pandas 库就像一个数据整理大师的百宝箱。你有一堆乱七八糟的数据,就像一堆打乱的扑克牌,Pandas 能把这些数据整理得井井有条,变成表格的样子。你只要告诉它数据是啥样的,它就能用里面的 DataFrame 工具把数据变成漂亮的表格,方便你查看和分析。

Matplotlib 库就像是一个画画高手的工具箱。你有一些数据,想把它们变成好看的图,就可以用 Matplotlib 里的工具。比如你有两组数字,一组是 x,一组是 y,你想看看它们之间的关系,就可以用 plot 工具把它们画成一条线,再用 show 工具把画好的图展示出来,就像画画高手用画笔和颜料画出了一幅能展示数据关系的画。

(2)AI必用库:

NumPy:高速处理数字(如图像像素计算)。

Pandas:整理表格数据(如用户行为记录)。

PyTorch/TensorFlow:搭神经网络的核心工具。

例子:用`opencv.resize()`一键调整图片大小,不用自己写算法。

实际应用

NumPy:在人工智能的世界里,NumPy 就像是一个超级强大的数字魔法师。在训练神经网络的时候,数据大多是以多维数组的形式存在的,就像一个个立体的数字方块。NumPy 可以非常高效地处理这些多维数组,比如对数组进行加减乘除运算,就像魔法师轻松地挥动魔杖改变数字方块的样子。模型的权重和偏置也都是用数组来表示的,NumPy 能快速地对这些数组进行操作,让模型能够快速地学习和更新。

Pandas:数据处理是人工智能项目中非常重要的一环,Pandas 就像是一个细心的数据管家。在拿到原始数据后,数据可能有缺失值,就像一件衣服有破洞;可能有重复的数据,就像书架上有重复的书。Pandas 可以用它的各种工具把这些问题解决掉,比如用 dropna 工具把有缺失值的部分去掉,用 drop_duplicates 工具把重复的数据删掉。它还能对数据进行筛选、分组统计等操作,就像管家把衣服整理好,把书架上的书分类摆放一样,让数据变得整洁有序,适合模型使用。

Matplotlib:在训练模型的过程中,我们需要了解模型的性能变化,就像我们要知道一个运动员的训练效果一样。Matplotlib 就像是一个专业的教练,它可以把模型的训练过程,比如损失值的变化、准确率的变化等,用图表的形式展示出来。损失值就像运动员跑步时的疲劳程度,准确率就像运动员跑步的速度。通过 Matplotlib 画出来的图,我们可以直观地看到模型的训练效果,判断模型是在变好还是变差,从而决定是否需要调整训练的参数。

Scikit - learn:Scikit - learn 就像是一个机器学习的魔法口袋,里面装着各种各样的机器学习算法和工具。如果你想做分类任务,就像把一堆水果分成苹果、香蕉、橙子等不同的类别,Scikit - learn 里有决策树、支持向量机等分类算法工具,你可以直接拿出来用。如果你想做回归任务,比如预测房价,它也有线性回归等算法工具。它还能帮你选择合适的模型,评估模型的性能,就像一个魔法顾问,告诉你哪个模型最适合你的任务,这个模型的效果怎么样。

TensorFlow 和 PyTorch:这两个库可是深度学习领域的超级巨星,就像电影里的大明星一样厉害。它们就像是两个强大的魔法城堡,里面有各种神奇的魔法道具和魔法咒语,可以用来构建和训练各种深度学习模型。比如你想构建一个卷积神经网络(CNN)来识别图像,就像建造一个专门能识别各种图片的魔法城堡,TensorFlow 和 PyTorch 提供了丰富的工具和接口,让你可以轻松地搭建出城堡的结构,然后用训练数据来训练这个城堡,让它学会识别图像的魔法。无论是图像识别、语音识别还是自然语言处理等任务,这两个库都能大显身手。

2.小结

综上所述,我们用游戏的角度去总结一下。

在 AI 游戏世界中,Python 各知识点助力 AI 闯关。

  1. 变量是游戏背包,存放各类数据道具,数据类型界定道具类别。
  2. 列表、元组和字典是道具整理箱,列表可灵活增减,元组确保数据稳定,字典能按标签速找道具。
  3. 条件语句如同智能 NPC,依场景与操作反应。
  4. 循环语句像刷怪机器,助 AI 反复积累经验。
  5. 函数是技能,输入指令发挥效果,提高代码复用。
  6. 类和对象类似不同职业角色,类是职业模板,对象依此行动,让代码结构清晰。
  7. 文件操作负责存档读档,对应 AI 读取训练数据、保存模型参数。
  8. 各类库则是强大外挂,NumPy 加速运算,Pandas 整理数据,Matplotlib 绘制图表,Scikit - learn 提供策略,TensorFlow 和 PyTorch 搭建复杂模型。各知识点协同,助 AI 完成高难任务 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔心小韩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值