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
数组运算
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
数组索引一种方式是形如x[1][5][3]这种,另一种索引方式为x[1,5,3],两种方式索引结果相同。
花式索引
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) |
布尔索引
ndarray-数组转置、求逆与轴对换
可以通过调用数组的transpose函数或者.T属性进行数组转置操作
可以用.I对数组进行求逆计算,例如x.I
matplotlib模块
figure和subplot
demo
result:
mtaplotlib绘制曲线
demo
result:
matplotlib绘制散点图
demo
result:
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/)
有监督学习
- 判别式模型(Discriminative Model):直接对条件概率p(y|x)进行建模,常见的判别模型有:线性回归、决策树、支持向量机SVM、k近邻、神经网络等。
- 生成式模型(Generative Model):对联合分布概率p(x,y)进行建模,常见生成式模型有隐马尔科夫模型HMM,朴素贝叶斯模型、高斯混合模型GMM,LDA等;
生成式模型更普适;判别式模型更直接,目标性强生成式模型关注数据是如何产生的,寻找的是数据分布模型,判别式模型关注的是数据的差异性,寻找的是分类面由生成式模型可以生产判别式模型,但是由判别式模型没法形成生成式模型
无监督学习
无监督学习试图学习或者提取数据背后的数据特征,或者从数据中心抽取出重要的特征信息,常见的算法有聚类、降维、文本处理(特征抽取)等。
无监督学习一般是作为有监督学习的前期数据处理,功能时从原始数据中必要的标签信息。
分类:通过分类模型,将样本数据中的样本映射到某个给定的类别中
聚类:通过聚类模型,将样本数据集中的样本分为几个类别,属于同一类别的样本相似性比较大。回归:反映了样本数据集中样本的属性值的特性,通过函数表达样本映射的关系来发现属性值之间的依赖关系关联规则:获取隐藏在数据项之间的关联规则或者相互关系,即可以依据一个数据项的出现推导出其他数据项的出现频率
人工智能、机器学习和深度学习之间的关系
开发流程
数据预处理
对数据进行初步预处理,需要将其转换为一种适合机器学习的表示形式,对许多模型来说,这种表示就是包含数值数据的向量或者矩阵。
- 将类别数据编码成为对应的数值表示(一般用1-of-k方法)-dumy(哑编码)
功能:将非数值型特征转换为数值型特征描述:假设变量的取值有k个,如果对这些值用1到k编续,则可用维度为k的向量来表示一个变量的值。在这样的向量里该取值所对应的序号所在的元素为1,,其他元素均为0.
- 从文本数据中提取有用的数据(一般用词袋法或者TF-IDF)
- 处理图像或者音频数据(像素、声波、音频等<傅里叶变换>)
- 数值数据转换为类别数据以减少变量的值,比如年龄分段
- 对数值数据进行转换,比如对数转换
- 对特征进行正则化、标准化,以保证同一模型的不同输入变量的值域相同
- 对现有变量进行组合或转换以生成新特征,比如平均数
分类算法评估方式
模型的测试一般以准确率、召回率、精准率、F值来比较准确率(Accuracy)=提取出的正确样本数/样本总数召回率(Recall)=正确的正例样本数/样本中的正例样本数——覆盖率精准率(Precision)=正确的正例样本数/预测为正例的样本数F值=Precision*Recall*2/(Precision+Recall)(即值为正确率和召回率的调和平均值)ROCAUC评估方式对应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 |
当房屋面积为55m2时,最终的租赁价格为多少
则需要根据已知数据得到y=ax+b型数据,其中a,b为需要根据已知数据得到的参数
当房价是由房屋面积、房间数量等因素决定时,则关系式就变为
要得到线性回归关系,就要得到参数值,并选择最优的θ值构成算法公式。
最小二乘法参数θ最优解公式为
θ = (xTx)−1xTY
最小二乘法要求矩阵xTx是可你的
普通最小二乘法线性回归案例
现有一批描述家庭用电情况的数据,对数据进行算法模型预测,并最终得到预测模型(每天各个时间段和功率之间的关系、功率与电流之间的关系等)。
基于线性回归算法训练
数据分割
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")
- Author:Lianzhao
- URL:https://lianzhao.vercel.app//article/python1
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts