5. Python time 模块
5. Python time 相关模块1. time 模块相关格式
时间戳 timestamp:指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,是一长串浮点数, 如1578779580.0。
struct_time 元组结构的时间:用元组表示时间的格式,如time.gmtime( ) 表示 UTC 的时间, 像time.struct_time(tm_year=2020, tm_mon=12, tm_mday=01, tm_hour=16, tm_min=32, tm_sec=38, tm_wday=1, tm_yday=151, tm_isdst=0),而time.localtime( )为 UTC+8 的时间, 相差8个小时。
format string 字符串格式的时间: 字符串格式的时间( 可自定义格式 ),如 2020-12-01 00:32:38。
这三者之间是可以相互转换的。
timestamp转struct_time:
12gmtime = time.gmtime(timestamp) #转 ...
1. 面向对象
1. 面向对象1. 面向对象编程万物皆对象1. 对象?对象:独立的存在 或 作为目标的事物
独立性:对象都存在清晰的边界,重点在于划分边界
功能性:对象都能表现出一些功能、操作或行为
交互性:对象之间存在交换,如:运算和继承
2. Python语言的“万物皆对象”
Python语言中所有的数据类型都行对象、函数是对象、模块是对象
Python所有类都继承与最基础类object
Python语言中数据类型的操作功能都是类方法的体现
3. OOP: Object-Oriented Programming
OOP: 面向对象编程,一种编程思想,重点在于高抽象的复用代码
OOP把对象当做程序的基本单元,对象包含数据和操作数据的函数
OOP本质是把问题解决, 抽象为以对象为中心的计算机程序
OOP在较大规模或复杂项目中十分有用,OOP可以提高协作产量
OOP最主要价值在于代码复用
OOP只是一种编程方式,并非解决问题的高级方法
4. 面向对象 VS 面向过程
面向过程: 以解决问题的过程步骤为核心编写程序的方式
面向对象: 以问题对象构建和应用为核心的编程程序的方式
所有OOP能解决的问 ...
4. 类的继承
4. 类的继承1. 继承 Inheritance
继承是面向对象程序设计的精髓之一
实现了以类为单位的高抽象级别代码复用
继承是新定义类能够几乎完全使用原有类属性与方法的过程
继承
2. 子类、父类、超类
子类、父类、超类
3. 类继承的构建在定义类是声明继承关系
123class <类名>(<基类名1>, <基类名2>): def __init__(self, [参数列表]): ...
基类名可以带路径:ModuleName.BaseClassName
4. 类继承的使用
基类的属性基本等同于定义在派生类中
派生类可以直接使用基类的类属性、实例属性
派生类可以直接使用基类的各种方法
使用基类的类方法和类属性时,要用基类的类名调用
isinstance(obj, cls) issubclass(子类名,父类名)判断继承关系的内置函数。
Python采用深度优先、从左至右的方法实施多继承。
派生类的约束:
派生类只能继承基类的公开属性和方法
派生类不能继承基类的私有属性 ...
3. 类的封装
3. 类的封装1. 封装Encapsulation封装是属性和方法的抽象。
属性的抽象:对类的属性(变量)进行定义、隔离和包护
方法的抽象:对类的方法(函数)进行定义、隔离和包护
目标是形成一个类对外可操作属性和方法的接口
graph LR
A((类CLass))--> B(属性 Attributes)
A --> C(方法 Methods)
属性:
私有属性:只能在类内部访问
公有属性:可以通过类、对象名访问
方法:
公有方法:只能在类内部使用
公开方法:可以通过类、对象名访问
2. 私有类属性和公开类属性私有属性:仅供当前类访问的类属性,子类也不能访问。
123class <类名>: <__私有类属性名> = <类属性初值> def __init__(self, [参数列表]):
私有类属性名开始需要有两个下划线__,如 __count。
只能在类的内部被方法所访问
不能通过<类名>.<属性名> 或 <对象名>.<属性名>方式访问
有效保证了属性维护的可控性
公开类属性:即类属 ...
2.Python 类的构建
2.Python 类的构建1. Class1. class的定义1234class <类名每个单词首字母大写>: """类描述块""" #解释 语句
类描述:在类定义后的首行,以独立字符串形式定义,<类名>.__doc__属性来访问。
2. 初始化方法和self123class <类名>: def __init__(self, [参数列表]): 语句块
类实例化时所用的方法,可以接收参数并完成初识操作。
__init__:
参数:第一个参数是self,表示类实例自身,其它参数是实例参数。
返回值:构造方法没有返回值,或者返回None,不然TypeError.
self: 在类定义内部代表类的实例
self是Python面向对象约定的一个类参数
self代表类的实例,在类内部,self用于组合访问实例相关的属性和方法
相比,类名代表类对象本身
3. 类的属性和方法
类的属性:类中定义的变量,用来描述类的一些特性参数
类的方法:类中定义且与类相关的函数, ...
1. 用python处理NLP
1. 用python处理NLP本文是[Sanjaya’s Blog] 中 Natural Language Processing with Python的笔记,但不会翻译所有内容。
jupyter notebook 链接
NLP是让计算机理解人类语言。广泛应用于信息检索(搜索引擎)、文本分类,自然语言生成等等。
典型的NLP应用流程如下:
1. 预处理Tokenization预处理一般要进过提取token,
1234text = "This warning shouldn't be taken lightly."print(text.split(sep=' '))====================================================['This', 'warning', "shouldn't", 'be', 'taken', 'lightly.']
用re去掉标点符号pu ...
2. shap 解释模型
2. shap 解释模型1. shap解释回归模型1234567891011121314import numpy as npimport pandas as pdimport matplotlib as mplimport matplotlib.cm as cmimport matplotlib.pyplot as pltfrom sklearn.feature_extraction.text import CountVectorizerfrom sklearn.feature_extraction import stop_wordsfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_scorefrom sklearn.model_selection import train_test_splitimport string, refrom time import time
导入数据
123456789df = pd.read_csv("https://q ...
1. lime 解释LSTM模型
1. lime 解释LSTM模型本文是 Practical NLP部分的笔记。
1. 数据预处理下载数据并解压得到数据集\Longrightarrow 读取对应训练和测试数据路径\Longrightarrow 获取pos和neg文件夹\Longrightarrow 读取这两个文件夹中的文本内容和txt文件名代表的评分并合并成一个df。开始解压后的文件目录如下: (tensorflow版本使用为:1.15.2)
aclImdb ├── imdbEr.txt ├── imdb.vocab ├── README ├── test │ ├── labeledBow.feat │ ├── neg │ ├── pos │ ├── urls_neg.txt │ └── urls_pos.txt └── train ├── labeledBow.feat ├── neg ├── pos ├── unsup ├── unsupBow.feat ├── urls_neg.txt ├── urls_pos.txt └── ...
skip-gram 负采样代码笔记
2. skip-gram 负采样代码笔记原代码地址,是CMU NLP课程代码。
1. 导入包1234567from collections import defaultdictimport mathimport numpy as npimport timeimport randomimport torchimport torch.nn.functional as F
2. 定义skip-gram词嵌入层123456789101112131415161718192021222324252627class WordEmbSkip(torch.nn.Module): def __init__(self, nwords, emb_size): super(WordEmbSkip, self).__init__() """ word embeddings """ #sparse=True权重矩阵的梯度变成稀疏向量 self.word_embedding = torch.nn. ...
Backpropagation 梯度推导 台湾国立大学应用深度学习
Backpropagation 算法推导本文是NTU陈蕴侬教授,应用深度学习课程反向传播算法推导的笔记。原文在:200310_Backprop.pdf
1. 全连接神经网络的公式
如图所示,全连接前馈神经网络,实现了f: \mathbb{R}^N \to \mathbb{R}^M
y = f(x) = \delta(W^L\cdots\delta(W^2\delta(W^1x+b^1)+b^2)\cdots+b^L)先定义一些参数:
\begin{aligned}
&a_i^l: 第l层第i个神经元的输出
\\ &a^l: 第l层的输出向量
\\
\\ &z_i^l:第l层第i个神经元激活函数的输入
\\ &z^l:第l层神经元激活函数的输入向量
\\
\\ &w_{ij}^l:从i到j的第l层的神经元权重
\\ &w^l:第l层的神经元权重向量
\\
\\ &b_i^l:第l层第i个神经元的偏置
\\ &b^l:第l层的神经元偏置向量
\end{aligned}
具体来说, 先看最后一层关系——从a到z,如上图。而从z到a:如下图
注意z到a的中间加了激活函数。这里也会产生一个 ...