从0到1:用Python构建你人生中的第一个人工智能AI模型

news2024/11/25 0:42:52

文章目录

    • 摘要
    • 引言
    • 数据预处理:为模型打下坚实基础
      • 数据预处理的步骤
      • Python示例
      • 代码说明:
      • 注意事项:
    • 模型建立:选择合适的模型
      • 神经网络示例
      • 代码说明:
    • 模型训练与测试
      • 训练示例
      • 代码说明:
    • 解读模型结果
      • 性能指标
    • 深度学习与神经网络
      • 卷积神经网络示例
      • 代码说明:
      • 注意事项:
    • 模型优化与调参
    • 结语

🔥主流AI大模型集聚地 + 上百种AI工作流落地场景 = 能用AI
🔥传送门:https://www.nyai.chat/chat?invite=nyai_1141439&fromChannel=csdn241008_python_AI

摘要

在这篇文章中,我将带你从0到1的了解,如何使用Python,构建你人生中的第一个人工智能AI模型。无论你是编程新手,还是希望深入探索人工智能领域的开发者,这篇文章都将为你提供清晰、详细的指南。我们将逐步介绍数据预处理、模型建立、训练和测试的过程,以及如何解读模型的结果。


引言

人工智能(AI)已经成为当今最热门的话题之一。AI 的应用领域不仅当今最流行的文生文,文生图,视频制作,AI绘画等等,除了这些还有生活中的方方面面。而Python 是人工智能(AI)领域中最常用的编程语言,原因包括其简单易学、广泛的三方库和框架支持,以及庞大的社区,成为了人工智能开发的首选语言。

Python是一种解释型、面向对象的高级程序设计语言,其简单明了的语法和强大的标准库使我们能够快速上手。尤其是在人工智能领域,Python的地位无可替代。它拥有众多强大的开源库,如NumPy、Pandas、Matplotlib、Sci-kit Learn、TensorFlow和PyTorch等,这些库大大降低了开发难度。

接下来,我们将详细介绍,如何利用Python的第三方库,带你走进AI的世界。
在这里插入图片描述

数据预处理:为模型打下坚实基础

数据预处理是AI和机器学习中至关重要的一步。好的数据预处理工作是建立高效模型的基础。干净、整洁和准确的数据能够帮助模型更好地学习和预测,而嘈杂或错误的数据则可能导致模型性能下降。

数据预处理的步骤

  1. 处理缺失值、去除异常值和重复值。
  2. 进行数据类型转换、离散化等。
  3. 将数据缩放到一定范围内,进行归一化或标准化。

Python示例

以下是一个简单的数据清洗和预处理示例:

import pandas as pd
import numpy as np

# 创建一个简单的数据集
data = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [24, np.nan, 30, 29],
    'gender': ['F', 'M', 'M', 'M']
})

# 处理缺失值
# 使用中位数填充缺失的年龄
data['age'].fillna(data['age'].median(), inplace=True)

# 将性别转换为数值类型,使用替换方法
data['gender'].replace({'M': 1, 'F': 0}, inplace=True)

# 数据规范化
# 规范化年龄,使用 Min-Max 归一化方法
data['age'] = (data['age'] - data['age'].min()) / (data['age'].max() - data['age'].min())

print(data)

代码说明:

  1. 数据创建

    • 创建一个包含姓名、年龄和性别的简单数据集。
  2. 缺失值处理

    • 使用 fillna 方法将缺失的年龄填充为该列的中位数。
  3. 性别转换

    • 将性别从字符类型转换为数值类型,使用 replace 方法。
  4. 数据规范化

    • 使用 Min-Max 归一化方法规范化年龄,使其值在 [0, 1] 之间。

注意事项:

  • 在进行规范化时,确保分母不为零。此代码中假设年龄列有有效值。

🔥主流AI大模型集聚地 + 上百种AI工作流落地场景 = 能用AI
🔥传送门:https://www.nyai.chat/chat?invite=nyai_1141439

模型建立:选择合适的模型

在人工智能和机器学习中,有多种模型可供选择。每种模型都有其独特的优点和适用情况。以下是几种常见的模型:

  • 决策树:适用于分类问题。
  • 支持向量机(SVM):用于分类和回归。
  • 神经网络:在图像识别和自然语言处理等领域表现优异。
    在这里插入图片描述

神经网络示例

以下是使用Python和PyTorch库建立一个简单神经网络的示例:

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset

# 定义神经网络结构
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(16, 32)  # 输入层到隐藏层
        self.fc2 = nn.Linear(32, 1)   # 隐藏层到输出层

    def forward(self, x):
        x = torch.relu(self.fc1(x))   # 使用ReLU激活函数
        x = self.fc2(x)
        return x

# 准备数据
# 假设我们有一些随机数据作为输入和目标
input_data = torch.randn(100, 16)  # 100个样本,每个样本16个特征
target_data = torch.randn(100, 1)   # 100个样本的目标值

# 创建数据集和数据加载器
dataset = TensorDataset(input_data, target_data)
dataloader = DataLoader(dataset, batch_size=16, shuffle=True)

# 初始化神经网络
net = Net()
print(net)

# 定义损失函数和优化器
criterion = nn.MSELoss()  # 均方误差损失函数
optimizer = optim.Adam(net.parameters(), lr=0.001)  # Adam优化器

# 训练网络
num_epochs = 20
for epoch in range(num_epochs):
    for inputs, targets in dataloader:
        optimizer.zero_grad()  # 清零梯度
        outputs = net(inputs)  # 前向传播
        loss = criterion(outputs, targets)  # 计算损失
        loss.backward()  # 反向传播
        optimizer.step()  # 更新参数

    print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')

# 测试网络
with torch.no_grad():
    test_input = torch.randn(10, 16)  # 10个测试样本
    test_output = net(test_input)
    print("Test Output:", test_output)

代码说明:

  1. 数据准备

    • 使用随机生成的数据作为输入和目标值。
    • 使用 TensorDatasetDataLoader 来处理数据。
  2. 损失函数和优化器

    • 使用均方误差损失函数(MSELoss)和Adam优化器。
  3. 训练循环

    • 进行了多个epoch的训练,并在每个epoch后打印损失值。
  4. 测试阶段

    • 生成一些随机的测试数据,并通过网络进行前向传播,输出结果。

你可以根据需要调整数据集、训练参数和网络结构。

模型训练与测试

模如何使用PyTorch进行模型训练,型训练的目的是找到最佳的模型参数,使模型在训练数据上的预测尽可能接近真实值。训练过程通常涉及优化算法(如梯度下降)和损失函数。

训练示例

import torch
import torch.nn as nn
import torch.optim as optim

# 定义神经网络结构
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(16, 32)  # 输入层到隐藏层
        self.fc2 = nn.Linear(32, 1)   # 隐藏层到输出层

    def forward(self, x):
        x = torch.relu(self.fc1(x))   # 使用ReLU激活函数
        x = self.fc2(x)
        return x

# 初始化神经网络
net = Net()

# 定义损失函数和优化器
criterion = nn.MSELoss()  # 均方误差损失函数
optimizer = optim.SGD(net.parameters(), lr=0.01)  # 随机梯度下降优化器

# 假设我们有一些输入数据x和对应的真实值y
x = torch.randn(10, 16)  # 10个样本,每个样本16个特征
y = torch.randn(10, 1)   # 10个样本的目标值

# 模型训练
for epoch in range(100):  # 训练100个epoch
    optimizer.zero_grad()  # 梯度清零
    outputs = net(x)  # 前向传播
    loss = criterion(outputs, y)  # 计算损失
    loss.backward()  # 反向传播
    optimizer.step()  # 更新参数

    # 每10个epoch输出一次损失
    if (epoch + 1) % 10 == 0:
        print(f'Epoch [{epoch + 1}/100], Loss: {loss.item():.4f}')

代码说明:

  1. 神经网络结构:定义了一个简单的神经网络,包括一个隐层和输出层。
  2. 损失函数和优化器:使用均方误差损失函数和随机梯度下降优化器。
  3. 输入数据:模拟了输入数据 x 和真实值 y
  4. 模型训练
    • 在每个epoch中,清零梯度,进行前向传播,计算损失,进行反向传播,并更新参数。
    • 每10个epoch输出一次损失值,以便跟踪训练过程中的性能变化。

在这里插入图片描述
🔥主流AI大模型集聚地 + 上百种AI工作流落地场景 = 能用AI
🔥传送门:https://www.nyai.chat/chat?invite=nyai_1141439

解读模型结果

解读模型的预测结果需要关注以下几个方面:

  • 性能指标:如准确率、均方误差等。
  • 预测误差:帮助了解模型的泛化能力。
  • 模型解释性:某些模型可以提供预测的解释,而对于"黑箱"模型,我们可能需要借助模型解释工具(如LIME和SHAP)。

性能指标

在机器学习中,性能指标是评估模型效果的重要工具。以下是一些常见的性能指标:

  1. 准确率(Accuracy):正确预测的样本数与总样本数之比。
  2. 精确率(Precision):正确预测为正类的样本数与预测为正类的样本数之比。
  3. 召回率(Recall):正确预测为正类的样本数与实际正类样本数之比。
  4. F1值:精确率和召回率的调和平均数,适用于不平衡数据集。
  5. 均方误差(MSE):预测值与真实值之间差的平方的平均值,常用于回归问题。

深度学习与神经网络

深度学习是机器学习的一个子集,主要通过神经网络来实现。神经网络的结构通常包含多个层次,每一层都可以提取不同层次的特征。以下是一些常见的神经网络类型:

  1. 前馈神经网络(Feedforward Neural Networks):信息在网络中单向流动,适用于简单的分类和回归任务。
  2. 卷积神经网络(CNN):主要用于图像处理,通过卷积层提取图像特征,广泛应用于计算机视觉任务。
  3. 循环神经网络(RNN):适用于序列数据,如时间序列和自然语言处理,能够处理输入数据的时间依赖性。

卷积神经网络示例

以下是一个卷积神经网络(CNN)示例:

import torch
import torch.nn as nn
import torch.nn.functional as F

# 定义卷积神经网络
class CNN(nn.Module):
    def __init__(self):
        super(CNN, self).__init__()
        self.conv1 = nn.Conv2d(1, 32, kernel_size=3, stride=1, padding=1)  # 输入通道1,输出通道32
        self.pool = nn.MaxPool2d(kernel_size=2, stride=2)  # 最大池化层
        self.fc1 = nn.Linear(32 * 14 * 14, 128)  # 全连接层

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))  # 卷积层 + 激活函数 + 池化层
        x = x.view(-1, 32 * 14 * 14)  # 展平
        x = F.relu(self.fc1(x))  # 全连接层
        return x

# 初始化卷积神经网络
cnn = CNN()
print(cnn)

# 假设我们有一些输入数据,尺寸为 (batch_size, channels, height, width)
# 例如:1个样本,1个通道,28x28的图像
x = torch.randn(1, 1, 28, 28)  # 输入数据
output = cnn(x)  # 前向传播
print("Output shape:", output.shape)  # 输出形状

代码说明:

  1. CNN定义

    • 定义了一个简单的卷积神经网络,包括一个卷积层、一个最大池化层和一个全连接层。
    • conv1 将输入的单通道数据转换为32个特征图。
    • pool 是一个最大池化层,用于下采样。
  2. 前向传播

    • forward 方法中,首先通过卷积层、ReLU激活函数和池化层处理输入数据,然后将数据展平并通过全连接层。
  3. 模型初始化

    • 创建 CNN 类的实例,并打印模型结构。
  4. 输入示例

    • 创建一个随机输入张量,模拟一个批量为1,通道为1,尺寸为28x28的图像,进行前向传播并打印输出形状。

注意事项:

  • 确保在使用全连接层之前展平数据的形状是正确的。在这个例子中,假设输入图像大小为28x28。
  • 你可以根据需要添加更多的卷积层、池化层或全连接层,以构建更复杂的网络结构。

在这里插入图片描述

模型优化与调参

在机器学习中,模型的性能往往依赖于超参数的选择。超参数是模型训练前需要设定的参数,如学习率、批量大小、网络层数等。以下是一些常用的调参方法:

  1. 网格搜索(Grid Search):通过遍历所有可能的超参数组合来寻找最佳参数。
  2. 随机搜索(Random Search):随机选择超参数组合进行评估,通常比网格搜索更高效。
  3. 贝叶斯优化(Bayesian Optimization):利用贝叶斯理论来优化超参数,适用于高维参数空间。

🔥主流AI大模型集聚地 + 上百种AI工作流落地场景 = 能用AI
🔥传送门:https://www.nyai.chat/chat?invite=nyai_1141439

结语

通过这篇文章,我们一起学习了使用Python进行人工智能编程的全过程。从数据预处理,到模型建立,再到模型训练和测试,最后我们还学习了如何解读模型结果并据此改进模型。每一步都是为了更好地理解数据,更好地建立和优化模型。

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

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

相关文章

原生小程序开发|小程序卡片(Widget) 开发指南

开发 Widget 代表应用的一个小程序卡片,负责小程序卡片的展示和交互。 小程序卡片(Widget) 的开发在智能小程序的基础上增加一个目录即可,用于存放小程序卡片(Widget)的代码。并在 project.tuya.json 中增加一个声明。 创建小程序卡片(Widget)项目 在 …

九、Drf序列化器

九、序列化器 9.1序列化 从数据库取QuerySet或数据对象转换成JSON 9.1.1序列化器的简易使用 #新建一张部门表 class Depart(models.Model):title=models.CharField(verbose_name=部门,max_length=32)order=models.IntegerField(verbose_name=顺序)count=models.IntegerFiel…

vscode中安装python的包

首先需要调出命令行。然后运行代码,找到你所需要的环境。 PS C:\Users\Administrator\AppData\Local\ESRI\conda\envs\arcgispro-env> conda env list # conda environments: #C:\ProgramData\Anaconda3 base * C:\Users\Administrator\.con…

【无人机设计与控制】无人机三维路径规划,对比蚁群算法,ACO_Astar_RRT算法

摘要 本文探讨了三种不同的无人机三维路径规划算法,即蚁群算法(ACO)、A算法(Astar)以及快速随机树算法(RRT)。通过仿真实验对比了各算法在不同环境下的性能,包括路径长度、计算效率…

软考越来越难了,2024年软考究竟还值不值得考?

最近不少同学沟通,聊到软考现在越来越难了,考了两三次都没过,也有不少新同学咨询软考考试的一些福利政策,投入大量的物力,财力,精力,那么到底软考值不值得考呢? 01 / 关于软考 软考…

【FlagScale】异构算力混合训练方案

背景以及必要性 算力需求的高峰:随着人工智能(AI)和生成内容(AIGC)的发展,对计算资源的需求急剧增加。尤其是参数规模达到数百亿的大模型训练,需要大量的计算资源。 算力市场供应紧张&#xff…

一键拯救废片!3个在线教程,实现光线重塑、表情迁移、模糊图像修复

每逢国庆「黄金周」,都是旅游业的高光时刻。根据研判,今年国庆假期全社会跨区域人员流动量将达到 19.4 亿人次,平均每天 2.77 亿人次。 与旅游业同步增长的还有摄影行业,旅拍带动的妆造、服饰租赁等相关环节发展火热,…

Linux安装Redis7.40

一、环境检查 1.1 查看是否已经安装了Redis应用 ps -ef |grep redis或者 whereis redis1.2 若已经安装了redis应用或者有遗留的Redis文件,进行移除或者启动即可。 二、下载&安装 2.1 找到对应的安装包资源,使用wget命令下载,这里安装…

小众交友软件有哪些?小众交友APP排行榜前十名推荐

在网络的广袤天地中,小众交友软件如隐藏的宝藏,散发着独特魅力。它们为人们提供别样的社交舞台,让孤独的灵魂有处可栖。今天,就让我们一同探寻那些小众交友软件的奇妙世界。 1. 咕哇找搭子小程序:这是一个实名制的找搭…

想要加密电脑?盘点2024年企业常用的10款电脑文件加密软件

在企业数据安全的时代背景下,文件加密已经成为保护企业核心信息、应对网络安全威胁的关键举措。无论是保护机密的商业数据,还是遵守数据隐私合规性要求,企业对文件加密软件的需求日益增长。本文将盘点2024年企业常用的10款电脑文件加密软件&a…

【Java 问题】基础——序列化

接上文 序列化 45.什么是序列化?什么是反序列化?46.说说有几种序列化方式? 45.什么是序列化?什么是反序列化? 什么是序列化,序列化就是把Java对象转为二进制流,方便存储和传输。 所以反序列化…

SOA是什么

SOA SOA 即 Service-Oriented Architecture(面向服务的架构)。 一、定义 SOA 是一种软件设计方法和架构理念,它将应用程序的不同功能单元(称为服务)通过定义良好的接口和契约联系起来。这些服务可以独立部署、独立运…

【JavaEE初阶】深入理解不同锁的意义,synchronized的加锁过程理解以及CAS的原子性实现(面试经典题);

前言 🌟🌟本期讲解关于锁的相关知识了解,这里涉及到高频面试题哦~~~ 🌈上期博客在这里:【JavaEE初阶】深入理解线程池的概念以及Java标准库提供的方法参数分析-CSDN博客 🌈感兴趣的小伙伴看一看小编主页&am…

(笔记)第三期书生·浦语大模型实战营(十一卷王场)–书生基础岛第6关---OpenCompass 评测 InternLM-1.8B 实践

学员闯关手册:https://aicarrier.feishu.cn/wiki/ZcgkwqteZi9s4ZkYr0Gcayg1n1g?open_in_browsertrue 课程视频:https://www.bilibili.com/video/BV1RM4m1279j/ 课程文档: https://github.com/InternLM/Tutorial/blob/camp3/docs/L1/OpenComp…

嵌入式设备硬件和软件安全设计

1. 引言 哪个领域的网络安全实施记录最差? 既不是 PKI/数字证书,也不是 密钥管理,也不是 OAuth。很可能是嵌入式设备和物联网 领域。 总的来说,这似乎是一个梦想,但如果可设计出“设计安全”的系统,而不…

转行大模型开发,能不能挽救职业生涯?

大模型算是当之无愧最火的一个方向了,算是新时代的风口。有小伙伴觉得,既然是新领域、新方向,那么,人才需求肯定比较大,相应的人才缺乏,竞争也会更少,那转行去做大模型是不是一个更好的选择呢&a…

硬盘数据恢复的方法有哪几种?9种妙招速览

在当今数字化时代,硬盘数据的安全至关重要。然而,数据丢失的情况时有发生,掌握硬盘数据恢复方法显得尤为重要。本文将详细介绍几种有效的硬盘数据恢复方法,帮助用户在遇到数据丢失问题时,能够迅速采取措施,…

Visual studio2019+PCL1.11.1+win10

目录 一.软件下载1.visual studio2019下载2.PCL下载二.安装步骤1.安装PCL1.11.0步骤2.解压pcl-1.11.0-pdb-msvc2019-win64.zip3.安装OpenNI-Windows-x64-2.2.msi4. 设置环境变量5.visual studio2019配置6.双击新添加的属性表—VC++目录—包含目录,添加7个include路径7.测试代码…

幸运7游戏模拟 python

题目: 幸运"7"游戏,用计算机模拟掷骰子的过程,测算两个骰子点数之和为7的概率。 游戏规则是你丢两个骰子,如果其点数之和为7你就赢4元,不是7你就输1元。 假设你刚开始有10元,当全部输掉为0元的时候游戏结…

阿里云云虚拟主机SSL证书安装指南

在安装SSL证书的过程中,您需要确保已经正确获取了SSL证书文件,并且能够访问阿里云云虚拟主机的管理页面。以下是详细的步骤说明: 第一步:准备SSL证书 申请SSL证书:访问华测ctimall网站(https://www.ctimal…