“深度学习与实践” 笔记(一)

“深度学习与实践” 笔记 第一课

Python 基础Attention

列表与元组的定义与用法

  • 列表类型使用中括号 [] ;
  • 列表:经常修改
  • 列表表示顺序
  • 列表不能作为字典key
  • 用法:定义数据集D
  • 数据列表包含所有的训练样本元组:[(1.73, 3.86, 2.50), (2.56, 9.75, 3.21), …]
  • 标签列表包含所有标签 :[1, 2, …]
  • ====================================
  • 元组使用 圆括号 ();
  • 元组:不可改变
  • 元组表示结构
  • 作为字典key
  • 用法:定义单个训练样本,例如(1.73, 3.86, 2.50)、(2.56, 9.75, 3.21) 等。

列表与元组的访问

  • Attention:列表和元组的访问都使用中括号
  • 索引访问:从0开始
  • 分片访问:
    myList[0:3:1] [起点元素索引: 终点元素索引: 跨度]
  • 左闭右开:起点元素包含在结果中,终点元素不包含在结果中
    在这里插入图片描述
  • 负数索引:从后往前计数,最后一个元素索引为-1
    在这里插入图片描述

列表元素修改

  • 元组元素不可修改,使用圆括号初始化的是元组。
  • 列表修改时由于始终是左闭右开,就是说中括号右边的索引号并不会包括在修改范围内
  • 列表在赋值修改时,使用逗号隔开,会替换掉中括号区间内的值,因此会发生元素数量的增减。

字典

  • 元组作为字典key
  • 字典保存带标签数据集, 使用大括号
    在这里插入图片描述
  • 大括号内元素使用“:”建立元组与标签的对应关系
  • 字典使用元组(在字典中为键)的值进行索引、取值,添加删除
  • 键不能直接修改,值可以
    在这里插入图片描述
  • 遍历字典:
    在这里插入图片描述
字典类型的函数
  • D.keys()//输出所有的键
  • D.values()//输出所有的值
  • D.get((元组键)) //输出的是键的值
  • D.popitem()// 将后面的元组推出数据集
  • D.pop((元组键))// 输出对应的值,并出栈
    在这里插入图片描述

集合(Set):无序!不重复!的元素序列。

  • 创建: 大括号! 或者 函数Set() 以及 列表
  • 创建空集:只能用Set(), 大括号会创建空字典
  • 作用:统计数据集类别数量
  • 如图,使用set(列表) 可将列表中重复的合并,生成新集合
    在这里插入图片描述

集合运算

在这里插入图片描述

集合操作

  • 添加元素 s.add( x )
  • 移除元素s.remove( x )
  • 计算集合元素个数len(s)
  • 清空集合s.clear()
  • 判断元素是否在集合中存在 x in s
  • 通过将数据集标签列表转为集合,可获取类别数量等信息

Python 函数返回值

  • Python 函数定义使用 def 函数名(参数,参数....) 与c++类似,但要注意缩进!
  • Python 函数仅支持返回一个值,但是可以通过返回元组的方式变相实现多个返回值
    def sumReturn(start, end):

    return result, start, end
    a, b, c = sumReturn(1, 10)
    _, _, d = sumReturn(1, 10)
    e = sumReturn(1, 10)

#运 行结 果 如 下: ’
55
1
10
10
(55, 1, 10)

Python 库

导入模块的三种方式

import numpy
- a = numpy.array(…)
import numpy as np
- a = np.array(…)
from numpy import array
-a = array(…)

处理表格数据

  • 1、导入模块 import pandas as pd
  • 2、加载 csv 文件df = pd.read_csv(”googlestock.csv”)

df 的数据类型:pandas.core.frame.DataFrame`

  • 3、将 df 修改为按时间戳索引,以便后续处理:
  • df[’Date’] = pd.to_datetime(df[’Date’])
  • df.set_index(”Date”, inplace=True)
  • 4、预处理
  • 5、数据转换:
    • 将 DataFrame 数据转换为适合进行进一步数学运算的矩阵数据
    • 对矩阵数据进行规范化等预处理
    • 进行线性回归分析
数据转换
  • 将列表数据转换成np.数组矩阵, 并划分为数据和标签。
  • X = np.array (df.drop['label'],1)
    在这里插入图片描述
Scikit-learn

在这里插入图片描述

  • 用于数据预处理
    from sklearn import preprocessing // 零均值化 单位方差化
    x= preprocessing.scale(X)
    x.mean(axis=0)
    x.std(axis=0)
    在这里插入图片描述
  • 数据特征降维PCA
    from sklearn.decomposition import PCA
    pca = PCA(n_components=2)
    pca.explained_variance_ratio_
    在这里插入图片描述
  • sklearn.model_selection.train_test_split 模块:快速划分训练集与测试集
    from sklearn.model_selection import train_test_split
    X_train, X_test,y_train,y_test = train_test_split(X,y,test_size=0.33,random_state=42)
    在这里插入图片描述
  • sklearn.linear_model.LinearRegression 模块: 线性回归
  • 在这里插入图片描述
  • regr = linear_model.LinearRegression() # 建 立 线性 回 归 对象
    regr.fit(diabetes_X_train, .diabetes_y_train)#训练
  • 预处理
  • 在这里插入图片描述
NumPy: python 科学计算的基础包
  • NumPy 数组的创建:向 array 中传入一个 list:

  • 一维数组: np.array([1,2,3])
    二维数组: np.array([[1,2,3],[4,5,6]])
    随机数组: x = np.random.rand(10)
    
  • 显示数组属性 a.shape , a. dtype

  • 改变数组元素类型a = a.astype('float64')

  • 改变数组尺寸 c = b.reshape(3, 4) 顺序调整。

  • 将 reshape 的某个参数指定为-1 时,numpy 会根据实际数组元素个数自动替换-1 为具体的大小c = b.reshape(-1, 4) c = b.reshape(3, -1) 的结果将替换成与上条代码一致。

  • 数组元素索引
    在这里插入图片描述在这里插入图片描述

  • 数组元素修改
    在这里插入图片描述

  • 多维数组索引切片
    在这里插入图片描述

a[2: :2, ::2]冒号的第三个代表步长,空白代表直到行尾

  • 在这里插入图片描述
  • ufunc操作
    在这里插入图片描述
  • 比较操作
    在这里插入图片描述
    在这里插入图片描述
  • 矩阵乘法 对两个矩阵的形状有要求

np.dot(数组1,数组2)

  • 文件存取
    在这里插入图片描述
    np.save ("a.npy",a)
    c=np.load("a.npy")
    np.savetxt("a.txt",a)
    np.loadtxt(a.txt)

Matplotlib 数据可视化包

  • matplotlib.image : 图像操作模块
  • matplotlib.pyplpot:显示图像
    在这里插入图片描述
  • 数据可视化demo
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Scipy 库

  • 通常作为matlab 与python 之间的桥梁。
  • 加载mat文件
    在这里插入图片描述
    在这里插入图片描述
  • 优化和拟合
    在这里插入图片描述

Homework 1:

题目:

设计python程序,首先安装并导入opencv库:
例如:conda install opencv
import cv2

然后使用cv2.imread()读取任意彩色图片为numpy矩阵,然后进行以下操作:
(1) 将图片的三个通道顺序进行改变,由RGB变为BRG,并用imshow()或者matplotlib中的有关函数显示图片
(2) 利用Numpy给改变通道顺序的图片中指定位置打上红框,其中红框左上角和右下角坐标定义方式为:假设学号为12069028,则左上角坐标为(12, 06), 右下角坐标为(12+90, 06+28). (不可使用opencv中自带的画框工具)
(3) 利用cv2.imwrite()函数保存加上红框的图片。

进阶题目:
假设有函数y = cos(ax + b), 其中a为学号前两位,b为学号最后两位。首先从此函数中以相同步长(点与点之间在x轴上距离相同),在0<(ax+b)<2pi范围内,采样出2000个点,然后利用采样的2000个点作为特征点进行三次函数拟合。请提交拟合的三次函数以及对应的图样(包括采样点及函数曲线)。

注意:基本作业为所有人必做。进阶作业选作,不计入总分。

猜你喜欢

转载自blog.csdn.net/yinxian9019/article/details/89491147