【人工智能与机器学习第1次作业】---Python环境配置与数据处理

本文提供了numpy库的基础练习,包括矩阵操作、数组计算性能比较以及矩阵变换。同时,介绍了pandas库中Series的创建和操作,如添加、修改数据。还涉及matplotlib库的图形绘制,如直线图、三角函数图和饼状图。最后简述了图灵测试的概念,它是衡量机器智能的一个标准。
摘要由CSDN通过智能技术生成

numpy的基础练习

  • 给定一个二维矩阵,如何交换其中两行的元素?

①代码:

n1=np.random.randint(0,1000,size=(7,8))
n1
n1[[1,0,2,3,4,5,6]]

②运行:
在这里插入图片描述

  • 创建一个100000000长度的随机数组,使用两种方法对其求三次方,并比较所用时间
    ①代码:
n2=np.random.random(size=100000000)
n2
n2=np.random.randint(0,100000000,(5))
n2
%timeit np.power(n2,3)
%timeit n2**3
n2_2=np.dot(n2,n2)
%timeit np.dot(n2_2,n2)

②运行:
在这里插入图片描述

  • 创建一个长度为10的随机数组并将最大值替换为0
    ①代码:
nd=np.random.randint(0,10,size=10)
display(nd)
index_max=nd.argmax()
nd[index_max]
all_index_max=np.argwhere(nd==nd[index_max]).reshape(-1)
all_index_max
nd[all_index_max]=-100
nd

②运行:
在这里插入图片描述

  • 创建一个每一行都是从0到10的11*11矩阵
    ①代码:
s=[0,1,2,3,4,5,6,7,8,9,10]
nd=np.array(s*11)
nd.reshape(11,11)
n4=np.arange(0,11,1)
n4 
n4_1=np.arange(0,121).reshape(11,11)
n4_1
n4_1[0:11]=n4
n4_1

②运行:
在这里插入图片描述

  • 创建一个10*10的ndarray对象,且矩阵边界全为1,里面全为0

①代码:

nd=np.zeros(shape=(10,10),dtype=np.int8)
nd[[0,9]]=1
nd[:,[0,9]]=1
nd
a1=np.ones((10,10))
a1
a1[1:-1,1:-1]=0
a1

②运行:
在这里插入图片描述

  • 给定一个4维矩阵,如何得到最后两维的和?
    ①代码:
n5=np.random.randint(0,100,size=(2,3,3,3))
n5
n5.sum(axis=(2,3))
n5.sum(axis=(-1,-2))

②运行:

在这里插入图片描述

  • 创建一个53随机矩阵和一个32随机矩阵,求矩阵积

①代码:

n6_1=np.random.randint(0,100,size=(5,3))
n6_1
n6_2=np.random.randint(0,100,(3,2))
n6_2
np.dot(n6_1,n6_2)

②运行:
在这里插入图片描述

  • 打印出以下函数(要求使用np.zeros创建8*8的矩阵):
    [[0 1 0 1 0 1 0 1]
    [1 0 1 0 1 0 1 0]
    [0 1 0 1 0 1 0 1]
    [1 0 1 0 1 0 1 0]
    [0 1 0 1 0 1 0 1]
    [1 0 1 0 1 0 1 0]
    [0 1 0 1 0 1 0 1]
    [1 0 1 0 1 0 1 0]]

①代码:

nd=np.ones(shape=(8,8),dtype=int)
nd[::2,::2]=0
nd[1::2,1::2]=0
nd
n8=np.zeros(shape=(8,8))
n8
n8[1::2,::2]=1
n8[::2,1::2]=1
n8

②运行:
在这里插入图片描述

  • 创建一个元素为从10到49的ndarray对象

①代码:

np.random.randint(10,50,size=10)
np.linspace(10,49,10)
a=np.arange(10,50)
a

②运行:
在这里插入图片描述

教材一二章基础例题练习

  • 输出

代码:

print("Run the code in this cell")

结果:
在这里插入图片描述

  • Markdown

代码:

# This one
## This two
### This there

结果:
在这里插入图片描述

  • 语言综合实例

代码:

import random
def fib_loop(n):
    listNum = []
    a, b = 0, 1
    for i in range(n):
        a, b = b, a + b
        listNum.append(a)
    return listNum
listPlan = ['英雄联盟', 'lol', '穿越火线', 'cf', ' 反恐精英', 'csgo', '地下城与勇士', 'dnf']
listNum = fib_loop(6)
varIdx = random.randint(0, 5)
varRandom = listNum[varIdx]
print('今日计划:', listPlan[varRandom])

结果:
(程序首先定义了fib_loop函数,用来生成斐波那契数列,并在主程序中调用了fib_loop函数,生成的斐波那契数列为[1,1,2,3,5,8]。程序通过包含random模块,并使用random.randint(0,5)函数生成了0~5的随机整数。然后将此随机数作为下标读取对应位置的斐波那契数,再使用该斐波那契数作为listPlan 数组的下标,得到推荐事件。可以看出,每次推荐的事件均为“学习”。)
在这里插入图片描述

  • 数值类型不可改变

代码:

i = 3
print(id(i))
i += 1
print(id(i))

结果:
(Python的数字类型包括int,float,bool和complex复数类型。当指定一个值时,就创建了一个Number类型的对象)
在这里插入图片描述

  • 字符串的访问

代码:

str = 'Picture'
print(str[1:3])
print(str[-3:-1])
print(str[3:-1])
print(str[-6:7])
print(str[2:])
print(str * 2)
print(str + "TEST")

结果:
在这里插入图片描述

  • 列表的访问

代码:

list = ['a', 56, 1.13, 'HelloWorld', [7, 8, 9]]
print(list)
print(list[4])
print(list[-2:5])
print(list[2:])

结果:
(正序访问的时候,索引值从0开始,截取从头下标到尾下标减1位置的元素;如果是逆序访问,则-1是末尾位置。)
在这里插入图片描述

  • 列表的遍历

代码:

lis=['瞎子','李青','盲僧','小学僧','Lee Sin']
# 直接遍历
print(lis)
# 按索引遍历
for i in enumerate(lis):
    print(i)
# 下标遍历
    for i in range(len(lis)):
    print(lis[i])

结果:
在这里插入图片描述

  • 字典的访问

代码:

dict = {'Name': 'Mary', 'Age': 7, 'Class': 'First'}
print(dict)
print("Name: ", dict['Name'])
print("Age: ", dict['Age'])

部分:
在这里插入图片描述

  • 集合成员检测

代码:

var = {'LiLei', 'HanHua', 'HanMeiMei', 'ZhangSan', 'Lisi'}
result='LiLei' in var 
print(result)
result='LiLei'   not in var 
print(result)

部分:
在这里插入图片描述

  • 使用readline()函数逐行读取文件
with open('data.txt') as f:
line1 = f.readline()
line2 = f.readline()
print(line1)
print(line2)
print(line1.strip())
print(line2.strip())
print(line1.split())

numpy、pandas、matplotlib三个库的例题练习

一,numpy库的例题

  • 用np.where()函数实现数据筛选
import numpy as np
num=np.random.normal(0,1,(3,4))
print(num)
num[num<0.5]=0
print(num)
print(np.where(num>0.5,1,0))

结果:
在这里插入图片描述

  • 使用嵌套for循环对nadarray数组进行迭代遍历

代码:

import numpy as np
a= np.arange(0,60,5)
a=a.reshape(3,4)
for xline in a:
    for yitem in xline:
        print(yitem,end='')

结果:
在这里插入图片描述

  • 创建二维ndarray的切片

代码:

import numpy as np
arr=np.arange(24).reshape(4,6)
print('arr=\n',arr)
arr1=arr[1:,:3]
print('B =\n',arr1)

结果:
在这里插入图片描述
二,pandas库的例题

  • 为一个地理位置数据创建Series对象

代码:

import pandas as pd
#使用列表创建,索引值为默认值
print('--------列表创建Series---------')
s1 = pd.Series([1,1,1,1,1])
print(s1)
print('--------字典创建Series---------')
s2 = pd.Series({'Longitude':39,'Latitude':116,'Tamperature':23})
print('Frist value in s2:',s2['Longtitude'])
print('--------用序列作Series索引---------')
#使用range()函数生成的迭代序列设置索引值
s3 = pd.Series([3.4,0.8,2.1,0.3,1.5],range(5,10))
print('Frist value in s3:',s3[5])

结果:
在这里插入图片描述

  • 对上面创建的s2,将温度增加2度,设置城市为北京

代码:

s2["city"]="beijing"
s2['Temperature']+=2
s2

结果:
在这里插入图片描述

  • 为s2添加一项湿度数据

代码:

stiny = pd.Series({'humidity':84})
s4=s2.append(stiny)
print('------------原Series:-------------\n',s2)
print('------------新Series:-------------\n',s4)

结果:
在这里插入图片描述

  • 创建DataFrame对象

代码:

import pandas as pd
dict1 = {'col1':[1,2,5,7],'col2':['a','b','c','d']}
df = pd.DataFrame(dict1)
df

结果:

在这里插入图片描述
三,matplotlib库的例题

  • 绘制简单直线

代码:

import matplotlib.pyplot as plt
import numpy as np
a=np.arange(10)
plt.xlabel('x')
plt.ylabel('y')
plt.plot(a,a*1.5,a,a*2.5,a,a*3.5,a,a*4.5)
plt.legend(['1.5x','2.5x','3.5x','4.5x'])
plt.title('simple lines')
plt.show()

结果:

在这里插入图片描述

  • 三角函数

代码:

# np.linespace()
x=np.linspace(-np.pi,np.pi,256,endpoint=True)
# 对 x 进行 cos 计算
C=np.cos(x)
# 对 x 进行 sin 计算
S=np.sin(x)
# 绘制折线图
plt.plot(x,C)
plt.plot(x,S)
plt.show()

结果:
在这里插入图片描述

  • 在子画布上画图

代码:

import matplotlib.pyplot as plt
import numpy as np
#在子画布上画三个图表
flt = plt.figure()
ax1 = flt.add_subplot(2,2,1)
x = np.arange(-1,1,0.01)
plt.plot(x,np.sin(x))
ax2 = flt.add_subplot(2,2,2)
plt.plot(x,np.cos(x))
ax3 = flt.add_subplot(2,2,3)
plt.plot(x,np.tan(x))

结果:

在这里插入图片描述

  • 绘制series数据

代码:

#绘制series数据
import matplotlib.pyplot as plt 
import pandas as pd
plt.xlabel("x")
plt.ylabel("y")
pd.Series([1.1,3.2,4.5,9.5,4.2,3.5,6.4,7.4,6.5,1.0,2.3]).plot(kind="line",style="--")
plt.show()

结果:

在这里插入图片描述

  • 饼状图

代码:

# 饼图
def youxi():
    """
    youxi
    """
    # 生成测试数据
    sizes = [15, 30, 45, 10]
    labels = ["cf", "lol", "dnf", "csgo"]
    colors = ["yellowgreen", "gold", "red", "lightcoral"]
 
    # 设置标题
    plt.title("youxi")
 
    # 设置突出参数
    explode = [0, 0.05, 0, 0]
 
    # 画饼状图
    patches, l_text, p_text = plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct="%1.1f%%", shadow=True, startangle=90)
 
    plt.axis("equal")
 
    # 图形显示
    plt.show()
    return
if __name__ == "__main__":
# 运行
    youxi()

结果:
在这里插入图片描述

什么是图灵测试

图灵测试(Turing test)是由艾伦·图灵(Alan Turing)于1950年提出的一种测试,用于评估一个机器是否能够表现出人类水平的智能。

测试过程中,一名人类评判者与一个机器人和一名真人进行交流,但评判者无法看到他们的身份。如果评判者无法确定哪一个是机器人,则机器人被认为通过了测试,即表现出了与真人相似的智能。

图灵测试成为了人工智能领域的一个标志性问题,也促进了人工智能技术的发展。虽然现今还没有一个机器完全通过了图灵测试,但是很多机器都已经能够实现一些人类的智能表现,如语音识别、自然语言处理、图像识别等领域。

总结

这次的作业让我对python这门完全陌生的语言有了最基本的了解,能用其完成简单的数据处理操作,其中对于numpy个人认为主要是处理一些数组类型的数据,而pandas则是更为全面的数据分析工具,能处理多种类型的数据,matplotlib则是主要用来画图,将数据转换为图形,让数据更为直观的表现出来

参考

https://blog.csdn.net/Dorisi_H_n_q/article/details/82259786

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
人工智能大作业-基于强化学习求解迷宫问题python实现源码+项目说明+实验报告+可执行文件 【项目介绍】 该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶, 或者实际项目借鉴参考! 当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 强化学习求解迷宫问题 核心代码 - maze.py: 迷宫类的实现,迷宫信息用一个二维数组表示,数组中的每个数代表一个方格,数字值代表方格类型(如0表示墙, 2表示陷阱, 3表示火)。 - train_qtable.py: Q表类的实现,Q表类有Q值的存储,决策的进行,Q表的学习等功能函数,进行预测和学习时会与迷宫(“环境”)进行交互,对其输入动作,得到反馈。 - train_network.py: 监督学习模型的学习,预测等实现。 - git.py: 监督学习用到的批量式学习仓库。 - maze_map.py: 存储6个事先定义好的迷宫 - draw.py: Q表的可视化以及完整走迷宫过程的呈现。 UI代码 - ui.py: 顶层窗口,有两个标签页 - ui_basic.py: “已有迷宫”标签页的实现,用户可以从我们定义好的几个迷宫中选择一个,进行训练并查看完整的走迷宫过程。 - ui_userDefine.py:“用户自定义”标签页的实现,用户可以输入任意大小的迷宫,自定义火焰周期,训练数上限。之后进行训练,并以三种不同的速度查看完整的走迷宫结果。 - draw_ui.py: 在ui界面绘制Q表和走迷宫过程。 运行方法 - 打开“可执行文件/ui.exe” - 运行“代码/ui.py” - 运行“代码/train_qtable.py”,对maze_map中定义的迷宫进行训练,训练结束后显示Q表和完整走迷宫过程。 编译运行环境 python 3.6, pyqt 5.13.1, matplotlib 3.0.2, numpy 1.15.2, Pyinstaller 3.5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值