type
status
date
slug
summary
tags
category
icon
password

Python基础

Time模块常用方法

方法
注解
time.localtime([secs])
接收时间辍(1970纪元后经过的浮点秒数),并返回当地时间下的时间元组t
time.mktime(tupletime)
接收时间元组并返回时间辍
time.sleep(secs)
推迟调用线程的运行,secs指秒数
time.time()
返回当前时间的时间辍
time.ctime()
返回一个可读的形式为“Wed Oct 2 16:39:48 2019”(2019年10月2日星期三16时39分48秒)的24个字符的字符串
time.strftime(format[,tupletime])
接收时间元组,返回指定格式可读字符串表示的当地时间,格式由format决定
demo1
demo2
demo3
demo4
2019-10-02 16:48:09
time模块时间格式
格式
含义
格式
含义
%Y
完整的年份
%H
一天中的第几个小时(00-24)
%m
月份(01-12)
%M
分钟数(00-59)
%d
一个月中的第几天(01-31)
%S
秒(01-61)
%B
本地完整月份名称
%b
本地简化月份名称
%A
本地完整星期名称
%a
本地简化星期名称

Numpy模块

NumPy的数组类被称作ndarray。通常被称作数组。

数组创建

函数
功能
array()
接收一个普通的python序列,并将其转换为ndarray
zeros()
创建指定长度或者形状的全零数组
ones()
创建指定长度或者形状的全1数组
empty()
创建一个没有任何具体值的数组(准备地说是创建一些未初始化的ndarray多维数组)
arange()
类似python的range函数,通过指定开始值、终值和步长来创建一个一维数组,注意:最终创建的数组不包含终值 arange([start,] stop[, step,], dtype=None)
linspace()
通过指定开始值、终值和元素个数来创建一个一维数组,数组的数据元素符合等差数列,可以通过endpoint关键字指定是否包含终值,默认包含终值(等差序列) numpy.logspace(x,y,z),表示从10^x开始到10^y结束,生成z个数。
logspace()
linspace函数类似,不过创建的是等比数列数组
random()
创建0-1之间的随机元素,数组包含的元素数量由参数决定
randint()
创建指定行、列数和数值范围的数组,numpy.random.randint(start,end,(x,y)),start-起始值,end-结束值,(x,y)-数组维数
demo1(二维数组)
demo2(二维数组)
demo3(三维数组)
demo4
demo5
demo6
demo7
demo8

数组运算

notion image
x*y—数组x与数组y点乘(x·y)
x.dot(y)—数组x与数组y叉乘(x×y)
x/y—数组x与数组y对应元素相除
x+y—数组x与数组y对应元素相加
x-y—数组x与数组y对应元素相减

索引和切片

demo
notion image
notion image
数组索引一种方式是形如x[1][5][3]这种,另一种索引方式为x[1,5,3],两种方式索引结果相同。

花式索引

notion image

ndarray-通用函数/常用函数(一元函数)

一元ufunc
描述
调用方式
abs, fabs
计算整数、浮点数或者复数的绝对值,对于非复数,可以使用更快的fabs
np.abs(arr) np.fabs(arr)
sqrt
计算各个元素的平方根,相当于arr ** 0.5, 要求arr的每个元素必须是非负数
np.sqrt(arr)
square
计算各个元素的评分,相当于arr ** 2
np.square(arr)
exp
计算各个元素的指数e的x次方
np.exp(arr)
log、log10、log2、log1p
分别计算自然对数、底数为10的log、底数为2的log以及log(1+x);要求arr中的每个元素必须为正数
np.log(arr) np.log10(arr) np.log2(arr) np.log1p(arr)
ceil
计算各个元素的ceiling值,即大于等于该值的最小整数
np.ceil(arr)
floor
计算各个元素的floor值,即小于等于该值的最大整数
np.floor(arr)

ndarray-聚合函数

函数
描述
调用方式
min
求数组中最小值
x.min()
求数组中某维数据中最小值
x.min(axis=0)
max
求数组中最大值
x.max()
求数组中某维数据中最大值
x.max(axis=0)
mean
求数组中平均值
x.mean()
求数组中某维数据中平均值
x.mean(axis=0)
std
计算数组数据的标准差
x.std()
求数组中某维数据中标准差
x.std(axis=0)
sum
计算数组数据的和
x.sum()
求数组中某维数据之和
x.sum(axis=0)
notion image
notion image

布尔索引

notion image

ndarray-数组转置、求逆与轴对换

可以通过调用数组的transpose函数或者.T属性进行数组转置操作
notion image
可以用.I对数组进行求逆计算,例如x.I

matplotlib模块

figure和subplot

demo
result:
notion image

mtaplotlib绘制曲线

demo
result:
notion image

matplotlib绘制散点图

demo
result:
notion image

matplotlib:颜色、标记和线型

颜色
标记和线型
color=
表示的颜色
-
>
H
‘b’
蓝色
--
1
+
‘g’
绿色
-.
2
x
‘r’
红色
:
3
D
‘c’
cyan—青色
.
4
d
‘m’
magenta—品红
o
s
|
‘y’
yellow—黄色
v
p
_
‘k’
黑色
^
*
‘w’
白色
<
h

Python高级应用(pass)

正则表达式

爬虫

案例

机器学习

基本概念

拟合:构建的算法符合给定数据的的特征。
x(i):表示第i个样本的x 向量。
xi:表示x向量的第i维度的值。
鲁棒性:表示系统的稳定性,当存在异常数据时,系统也会拟合出数据。
过拟合:算法太符合样本数据的特征,对于实际生产中的数据特征无法拟合。
欠拟合:算法不太符合样本数据的特征。
学习框架:sciket-learn(Python)(URL:http://scikit-learn.org/stable/)
notion image

有监督学习

  1. 判别式模型(Discriminative Model):直接对条件概率p(y|x)进行建模,常见的判别模型有:线性回归、决策树、支持向量机SVM、k近邻、神经网络等。
  1. 生成式模型(Generative Model):对联合分布概率p(x,y)进行建模,常见生成式模型有隐马尔科夫模型HMM,朴素贝叶斯模型、高斯混合模型GMM,LDA等;
生成式模型更普适;判别式模型更直接,目标性强
生成式模型关注数据是如何产生的,寻找的是数据分布模型,判别式模型关注的是数据的差异性,寻找的是分类面
由生成式模型可以生产判别式模型,但是由判别式模型没法形成生成式模型

无监督学习

无监督学习试图学习或者提取数据背后的数据特征,或者从数据中心抽取出重要的特征信息,常见的算法有聚类、降维、文本处理(特征抽取)等。
无监督学习一般是作为有监督学习的前期数据处理,功能时从原始数据中必要的标签信息。
分类:通过分类模型,将样本数据中的样本映射到某个给定的类别中
聚类:通过聚类模型,将样本数据集中的样本分为几个类别,属于同一类别的样本相似性比较大。
回归:反映了样本数据集中样本的属性值的特性,通过函数表达样本映射的关系来发现属性值之间的依赖关系
关联规则:获取隐藏在数据项之间的关联规则或者相互关系,即可以依据一个数据项的出现推导出其他数据项的出现频率

人工智能、机器学习和深度学习之间的关系

开发流程

数据预处理

对数据进行初步预处理,需要将其转换为一种适合机器学习的表示形式,对许多模型来说,这种表示就是包含数值数据的向量或者矩阵。
  • 将类别数据编码成为对应的数值表示(一般用1-of-k方法)-dumy(哑编码)
功能:将非数值型特征转换为数值型特征
描述:假设变量的取值有k个,如果对这些值用1到k编续,则可用维度为k的向量来表示一个变量的值。在这样的向量里该取值所对应的序号所在的元素为1,,其他元素均为0.
  • 从文本数据中提取有用的数据(一般用词袋法或者TF-IDF)
notion image
  • 处理图像或者音频数据(像素、声波、音频等<傅里叶变换>)
  • 数值数据转换为类别数据以减少变量的值,比如年龄分段
  • 对数值数据进行转换,比如对数转换
  • 对特征进行正则化、标准化,以保证同一模型的不同输入变量的值域相同
  • 对现有变量进行组合或转换以生成新特征,比如平均数

分类算法评估方式

模型的测试一般以准确率、召回率、精准率、F值来比较
准确率(Accuracy)=提取出的正确样本数/样本总数
召回率(Recall)=正确的正例样本数/样本中的正例样本数——覆盖率
精准率(Precision)=正确的正例样本数/预测为正例的样本数
F值=Precision*Recall*2/(Precision+Recall)(即值为正确率和召回率的调和平均值)
ROC
notion image
notion image
AUC
notion image
评估方式对应scikit-learn中的函数
指标
描述
scikit-learn函数
Precision
精确度
from sklearn.metrics import precision_score
Recall
召回率
from sklearn.metrics import recall_score
F1
F1指标
from sklearn.metrics import f1_score
Confusion Matrix
混淆矩阵
from sklearn.metrics import confusion_matrix
ROC
ROC曲线
from sklearn.metrics import roc
AUC
ROC去线下的面积
from sklearn.metrics import auc
Mean Square Error (MSE,RMSE)
平均方差
from sklearn.metrics import mean_squared_error
Abysolute Error(MAE,RAE)
绝对误差
from sklearn.metrics import mean_absolute_error, median_absolute_error
R-Squared
R平方值
from sklearn.metrics import r2_score

最大似然估计(MLE)

前提:样本数据本身是服从某种概率分布的(样本数据是全部数据的一部分)
问题:只有样本数据,不知道数据服从分布的相关参数(样本服从的分布是全体数据符合的分布)
作用:估计样本数据分布的相关参数
思路:1.当分布的参数为某一个最佳值时,所有样本数据出现的联合概率应该为最大;
2.当所有样本数据出现的联合概率最大的时候,对应的分布参数就是最佳解;
3.联合密度函数就叫做似然函数。

回归算法

回归算法是一种有监督算法,用来建立“解释”变量(自变量x)和观测值(因变量y)之间的关系;从机器学习的角度来看,用于构建一个算法模型(函数)来做属性(x)与标签(y)之间的映射关系,在算法学习的过程中,试图寻找一个函数h:Rd🡪R使得参数之间关系的拟合性最好。
回归算法中算法(函数)的最终结果是一个连续的数据值,输入值(属性值)是一个d维度的属性/数值向量。
例如已知房屋面积与房屋价格,预测某一房屋面积的房屋价格
房价预测
房屋面积(m2)
租赁价格(¥1000)
10
0.8
15
1
20
1.8
30
2
50
3.2
60
3
60
3.1
70
3.5
notion image
当房屋面积为55m2时,最终的租赁价格为多少
则需要根据已知数据得到y=ax+b型数据,其中a,b为需要根据已知数据得到的参数
当房价是由房屋面积、房间数量等因素决定时,则关系式就变为
notion image
要得到线性回归关系,就要得到参数值,并选择最优的θ值构成算法公式。
最小二乘法参数θ最优解公式为
θ = (xTx)−1xTY
最小二乘法要求矩阵xTx是可你的

普通最小二乘法线性回归案例

现有一批描述家庭用电情况的数据,对数据进行算法模型预测,并最终得到预测模型(每天各个时间段和功率之间的关系、功率与电流之间的关系等)。
 
notion image
基于线性回归算法训练

数据分割

x_train,x_test,y_train,y_test=train_test_split(x,y2,test_size=0.2,random_state=0)
将处理好的数据进行分割,将数据分为训练集和测试集,x,y2为处理好的数据,test_size为测试集占数据总量的比例

数据归一化处理

StandardScaler:将数据转换为标准差为1的数据集(有一个数据的映射)
scikit-learn中:如果一个API名字有fit,那么就有模型训练的含义,没法返回值
scikit-learn中:如果一个API名字中有transform, 那么就表示对数据具有转换的含义操作
scikit-learn中:如果一个API名字中有predict,那么就表示进行数据预测,会有一个预测结果输出
scikit-learn中:如果一个API名字中既有fit又有transform的情况下,那就是两者的结合(先做fit,再做transform)

模型保存与加载

from sklearn.externals import joblib
保存模型要求给定的文件所在的文件夹比较存在
# 将模型保存
joblib.dump(scaler, "G:/python learing practice/data_ss.model") ## 将标准化模型保存
joblib.dump(lr, "G:/python learing practice/data_lr.model") ## 将模型保存
#加载模型
ss=joblib.load("G:/python learing practice/data_ss.model")
lr=joblib,load("G:/python learing practice/data_lr.model")
ubuntu终端带颜色输出Simulink Adams联合仿真