首页 > 其他分享 >人工智能实验报告1

人工智能实验报告1

时间:2024-10-30 20:47:21浏览次数:3  
标签:人工智能 Linux weights install error np 实验报告 data

1730273092397 1730273099590

姓名:熊俊松________________________ 班级:2220422__________________________________ 学号:20222024234_______________________

实验题目:___________________________ **回归 **___________________________________

实验目的:

	掌握回归算法的编程实现细节,要求不能使用任何库,纯手动编程实现多元线性回归。加深 对梯度计算、梯度下降算法、目标函数的求极值的理解,领会初值选取、学习率选择、公差 选择等对回归的影响。 

问题描述与步骤:

1.1 搭建开发环境:
  1. 实验是想要用linux来实现这个程序,实验是要求用Xubuntu Linux系统来实现,但是由于我用的别的linux虚拟机来实现(VMware Workstation Pro)和下了一个终端软件来连接创建的虚拟机(FinalShell)。下面我会详细来怎么配置这个两个系统的开发环境配置:

    Xubuntu Linux系统:​

    1. 下载python解释器
    sudo apt install python3-pip  # Debian/Ubuntu 系统
    
    1. 分别下载numpy,scipy,matploblib,sklearn,pytorch模块
    pip3 install numpy
    pip3 install matplotlib
    pip3 install scipy
    pip3 install scikit-learn
    
    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
    
    
    1. 下载linux版的Vscode软件(可下可不下,只是一个编辑软件)

    2. 安装必要的依赖(以 Debian/Ubuntu 为例):

      sudo apt install software-properties-common apt-transport-https curl
      
    3. 添加 Microsoft GPG 密钥

      curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
      
    4. 添加 VS Code 软件源

      sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
      
    5. 更新软件包列表并安装 VS Code

      sudo apt update
      sudo apt install code
      

    VMware Workstation Pro系统

    1. 下载python解释器
    sudo yum install python3-pip  # CentOS/Fedora 系统
    
    1. 分别下载numpy,scipy,matploblib,sklearn,pytorch模块(和上面一样)
    pip3 install numpy
    pip3 install matplotlib
    pip3 install scipy
    pip3 install scikit-learn
    
    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
    
    1. 下载linux版的Vscode软件(可下可不下,只是一个编辑软件)

      1. 安装必要的依赖

        sudo yum install -y gcc-c++ make
        
      2. 添加 Microsoft GPG 密钥

        sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
        
      3. 添加 VS Code 软件源

        sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
        
      4. 更新软件包列表并安装 VS Code

        sudo yum check-update
        sudo yum install code
        
1.2 下载数据

​ 由于这个回归实验的程序需要一个表格数据(这里用csv文件),老师在客群里面发了,大家把这个文件最好放在程序的相同目录下面,当然也可以不放在相同的目录下,但是程序里面的文件路径需要修改一下。

例下:

1730288205291

提示:当然这个Windows系统的

  • 下面我写一下Linux系统的怎么弄呢?
  1. 首先打开虚拟机

1730288818758

  1. 打开FinalShell来连接这个创建的虚拟机

1730288906661

  1. 进入Desktop(桌面)创建一个文件夹:人工智能实验1

1730289062119

1730289165776

  1. 进入人工智能文件夹里面,并且创建:人工智能实验1.py文件

    1730289369205

  2. 将老师的文件移到人工智能实验1这个文件夹里面

1730289604540

​ 提示:移动进去了,可以看出来

  1. 进入到人工智能实验1.py里面将下面的程序代码写进去

1730289933700

  1. 执行代码

1730290984630

  1. 打开这个png图像文件,由于linux没有可视化工具,我们将其移到windows里面观看

1730291580684

1730291651104

1730291691241

实验方法(程序):

windows(用这个):

import math
import numpy as np
from numpy import genfromtxt
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 导入数据
data = genfromtxt("Delivery.csv", delimiter=",")
x_data = data[1:, :2]  # 选择前两列作为特征
y_data = data[1:, 2]    # 选择第三列作为目标变量

# 检查特征数量
num_features = x_data.shape[1]

# 初始化参数
weights = np.zeros(num_features + 1)  # +1 for w0
alpha = 0.005
epsilon = 1e-4
error = float('inf')  # 初始化为无穷大

m = len(x_data)

while error > epsilon:
    prediction = np.dot(x_data, weights[1:]) + weights[0]  # 计算预测

    error_i = prediction - y_data
    grad_w = np.dot(x_data.T, error_i) / m  # 计算梯度
    weights[1:] -= alpha * grad_w
    weights[0] -= alpha * np.mean(error_i)  # 更新 w0

    # 计算误差
    error = np.linalg.norm(grad_w)  # 计算误差
    print(weights, error)

# 绘制三维图
ax = plt.figure().add_subplot(111, projection='3d')
ax.scatter(x_data[:, 0], x_data[:, 1], y_data, c='r', marker='o', s=100)

x0 = np.unique(x_data[:, 0])
x1 = np.unique(x_data[:, 1])
X0, X1 = np.meshgrid(x0, x1)  # 使用唯一值生成网格
Z = weights[0] + weights[1] * X0 + weights[2] * X1

ax.plot_surface(X0, X1, Z, alpha=0.5)
ax.set_xlabel('Miles')  # 根据需要修改标签
ax.set_ylabel('Number of Deliveries')  # 根据需要修改标签
ax.set_zlabel('Time')  # 根据需要修改标签
plt.show()

Linux用这个:

import numpy as np
from numpy import genfromtxt
import matplotlib
matplotlib.use('Agg')  # 使用 Agg 后端
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 导入数据
data = genfromtxt("Delivery.csv", delimiter=",")
x_data = data[1:, :2]  # 特征
y_data = data[1:, 2]    # 目标

# 初始化参数
num_features = x_data.shape[1]
weights = np.random.randn(num_features + 1) * 0.01  # 小随机值初始化
alpha = 0.001  # 学习率
epsilon = 1e-4
error = float('inf')

m = len(x_data)

while error > epsilon:
    prediction = np.dot(x_data, weights[1:]) + weights[0]
    error_i = prediction - y_data
    grad_w = np.dot(x_data.T, error_i) / m

    # 检查梯度
    if np.any(np.isnan(grad_w)) or np.any(np.isinf(grad_w)):
        print("Gradient contains NaN or Inf, stopping updates.")
        break

    weights[1:] -= alpha * grad_w
    weights[0] -= alpha * np.mean(error_i)

    error = np.linalg.norm(grad_w)
    print(weights, error)

# 可视化并保存图像
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x_data[:, 0], x_data[:, 1], y_data, c='r', marker='o', s=100)

x0 = np.unique(x_data[:, 0])
x1 = np.unique(x_data[:, 1])
X0, X1 = np.meshgrid(x0, x1)
Z = weights[0] + weights[1] * X0 + weights[2] * X1

ax.plot_surface(X0, X1, Z, alpha=0.5)
ax.set_xlabel('Miles')
ax.set_ylabel('Number of Deliveries')
ax.set_zlabel('Time')

# 保存图像
plt.savefig('output.png')

实验(编程调试)过程与结果分析

Linux产生的图像:

output

Windows产生的图像:

1730291932151

实验结论与心得:

从实验可知,这个实验是基于python编程语言去完成**多元线性回归 **的实现,所以这个实验让我们可以对python的编程语法以及思想和他的第三方模块的使用有了一定的了解,例如实验用到的numpy,matblotlib模块。

​ 不仅如此,他还不只是可以用Windows系统的完成,还可以用Linux操作系统完成,这个实验呢对很多的人来说应该是比较难的,因为实验要求是用Linux(VMWARE系统或者XUbuntu系统)完成。

​ 但是我觉的这个实验程序对于那些没有Linux系统基础的同学来说,Windows应该更加友好,所以我觉得大家还是用Windows操作系统的Vscode来实现这个程序实验吧,因为这个程序在那个操作系统上都可以实现(Windows或Linux),对于那些想要用Linux系统来实现的同学来说,它们应该会得到更多的知识,例如对Linux系统的认识,以及对Linux的指令的使用的了解。

​ 但是我觉得那些不想学习深入或者学习Linux而是为了完成实验的同学来说呢,我觉得还是没必要去下那个乌班图(Xubuntu)虚拟机,不管咋样,我看了一下安装包,大概有个4~5个G,这个实验我也是收获满满,教同学完成实验,我也是更加深刻的记住了一些配置知识。

标签:人工智能,Linux,weights,install,error,np,实验报告,data
From: https://www.cnblogs.com/positive-boy/p/18516594

相关文章

  • 2024-10-30 学习人工智能的Day18
    Python包和模块当使用Python编程时,包(Packages)和模块(Modules)是两个关键的概念,它们有助于组织、管理和复用代码。1.模块(Modules)1.1什么是模块一个.py文件就是一个模块模块是含有一系列数据,函数,类等的程序作用把相关功能的函数等放在一起有利于管理,有利于多人合作开......
  • 9.24人工智能教育技术学课后总结
    一、思维导图的学习与体验在课堂上,老师详细讲解了思维导图的构成要素,包括中心主题、分支节点、连接线以及关键词等,并通过实例展示了如何构建一张清晰、有条理的思维导图。随后,我们学习了几款常用的思维导图工具,如XMind、MindNode、SimpleMind等。二、PDF转换器的应用与探索PDF......
  • 10.15人工智能教育技术学课后总结
    从教育者角度理解AI课程的开篇,老师首先为我们介绍了规则基础系统。这是一种基于明确规则和逻辑的人工智能系统,能够按照预设的条件和行动进行决策。在教育领域,规则基础系统可以被用来制定自动化的评分标准、课程安排等,从而提高教育管理的效率和准确性。紧接着,我们学习了机器学习......
  • 10.22人工智能教育技术学课后总结
    提示语设计课程伊始,老师便强调了提示语在教学中的关键作用。如何设计有效的提示语,以充分发挥技术的辅助作用,成为我们亟待解决的问题。提示语设计的原则明确性:提示语应清晰明了,让学生一目了然地知道需要做什么、怎么做。启发性:通过设计富有启发性的提示语,激发学生的好奇心和求......
  • 10.29人工智能教育技术学课后总结
    1.课程回顾2.人工智能在小学教育中的应用实例3.智能评估与反馈4.面临的挑战与展望本节课老师以人工智能技术在王力宏离婚事件中的应用引入,讲述了人工智能技术对教学的革命性作用。人工智能在小学教育中的应用实例老师提到了一个让我印象深刻的例子:通过人工智能技术,系统可以......
  • 20222412 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    202224122024-2025-1《网络与系统攻防技术》实验三实验报告1.实验内容(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧正确使用msf编码器,使用msfvenom生成如jar之类的其他文件veil,加壳工具使用C+shellcode编程(2)通过组合应用各种技术实现恶......
  • 人工智能大模型赋能医疗健康产业白皮书(2023年)|附88页PDF文件下载
    本文提供完整版报告下载,请查看文后提示。以下为报告节选:…文│人工智能医疗器械创新合作平台、中国信通院本报告共计:88页。完整版请添加下方领取!如何学习AI大模型?“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。这句话,放在计算机、互联网、移动互联网的开局......
  • 【人工智能】使用Keras构建图像分类模型:从数据预处理到模型优化的全流程解析
    图像分类是计算机视觉中的经典任务,深度学习技术的发展使得卷积神经网络(CNN)成为图像分类的主流工具。本文将通过Keras库,引导读者从头构建一个图像分类模型。我们将详细讨论数据预处理、CNN的设计与搭建,以及模型调优和优化技巧。通过这篇文章,读者可以掌握如何使用Keras进行图......
  • 20222428 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    1.实验内容1.1本周学习内容1.1.1后门实践中的基本概念netcat(瑞士军刀):用于监听、探测端口、正向连接、反向连接、文件传输。socat:netcat的加强版(多了SSL连接等功能)。Meterpreter工具:Metadploit框架中的扩展模块,是生成后门的工具。VeilEvasion:生成免杀的工具。1.1.2......
  • 10.29 人工智能学习内容
    上节课内容补充【给大语言模型法阅读材料】如果你手边现成有原文,而且长度合适,建议自带原文去找大语言模型Usetheprovidedarticlesdelimitedbytriplequotestoanswerquestions.Iftheanswercannotbefoundinthearticles,write"Icouldnotfindananswer."......