AI基础课程之常用框架工具汇总
1.Numpy
NumPy作为Python在数据科学领域一个强有力的工具,使得Python在数据函数的实现和
矩阵数组的运算上有着巨大的优势。
科学计算常用的线性代数运算、傅里叶变换、随机数模块等。
优势一:减少编程量。可以省略掉许多循环语句。
优势二:增加运算效率。Numpy针对数组进行了优化,存储和输入输出效率都远高于Python
数组。Numpy数组要求元素具有相同的数据类型,避免了类型检查。
优势三:减少内存消耗。Numpy数组占用的内存较少。
Numpy数据类型:
bool布尔型数据类型
int默认的整数类型
int8,int16,int32,int64,
uint8,uint16,uint32,uint64
float,float16,float32,float64
complex复数
Numpy数组之切片与索引
Numpy数组之广播
数组常用方法:
numpy.reshape 改变数组的形状、维度
numpy.flat 将数组展开为一维数组
numpy.transpose 翻转数组(转置)
numpy.stack 连接相同形状数组
numpy.append 在数组末尾增加元素
numpy.insert 在指定位置加入元素
numpy.delete 返回删除后的新数组
Numpy矩阵与矩阵运算
矩阵相乘:numpy.dot()
元素相乘:numpy.multiply()
求逆:a.I
转置:a.T
Numpy随机模块
np.random.rand() 范围在[0,1)的随机数
np.random.randn() 输出在服从标准正态分布的随机数
np.random.randint(low[,high,size]) 输出在[low,high)范围的整数
np.random.random([size]) 输出给定形状,范围在[0,1)的随机数
Numpy分布
beta贝塔分布
lognormal 对数正态分布
normal 正态分布
poisson 泊松分布
uniform 均匀分布
Numpy常用函数
算术函数
三角函数:np.sin,np.cos,np.tan
舍入函数:np.around,np.floor,np.ceil
加减乘除:np.add,np.subtract,np.multiply,np.divide
余数:np.mod
平方、乘方和平方根:np.square,np.pow,np.sqrt
统计函数
最大最小值:np.amin,np.amax
中位数:np.median
算术平均:np.mean
加权平均:np.average
标准差,方差:np.std,np.var
2.Pandas
Python数据分析处理库Pandas
Pandas工具库中的一些常用知识,包括了pandas中的数据结构、时间序列、缺失值处理
以及一些常用数据处理方法。
目标
掌握pandas处理缺失值的方法
熟悉pandas中的时间序列
掌握pandas中的dataframe的使用
数据格式:pandas中包含了高级的数据结构DataFrame和Series。
日期处理:pandas中包含了时间序列的处理方法,可以生成或者处理日期数据。
文件操作:pandas可以方便快捷的对csv,excel和tsv文件进行读写操作。
数据分析:pandas中提供了大量的方法,用于数据的处理和分析
Series
Series可简单的看作是一维数组。
Series具有索引(index)。
Series可以使用字典、数组等数据进行创建。
DataFrame
DataFrame是由数个Series按行合并而成的二维数据结构(表格型)。
具有行索引和列索引。
可以使用字典、数组、Series等数据进行创建。
DataFrame常用操作
创建DataFrame:pd.DataFrame(data)
查看数据:df.head(n)查看前n条数据,df.tail(n)查看后n条数据
数据属性:df.index查看索引,df.columns列索引,df.values查看数据
数据统计量:df.describe()纯数值数据的统计信息。
数据索引:df.iloc按照下标选取数据,df.loc按照索引选取,df.ix按照下标和索引混合选取。
切片:和列表相同,按照bool切片
时间序列
时间序列数据是一种重要的结构化数据形式。在多个时间点观察或测量到的任何时间都可以形成一段时间序列。
时间戳:timestamp特定的时刻
固定时间:period,如2022年全年或者某个月份
时间间隔:interval由起始和结束时间戳表示,period可以被看做是间隔的特例。
时间序列常用操作
时间索引:pd.DatatimeIndex()
时间格式解析:pd.to_datetime()
时间戳:pd.date_range()
生成日期:pd.period_range()
时间差:pd.timedelta_range()
日期的减法操作:时间序列-日期,日期-日期
pandas数据处理
缺失值:pandas中提供了缺失值数据处理的常用方式,包括填充、删除等操作。
统计值:pandas中提供了数据统计方法,如:均值、求和、累计等操作。
可视化:pandas数据可以直接使用绘图的形式来查看。
缺失值处理
空值/缺失值判断:df.isnull/df.isna()
缺失值填充:df.fillna(data)
删除:df.dropna()
空值和缺失值:空值(""),缺失值(NaN,NaT)
数据处理方法
计算:求和df.sum(),求均值df.mean()
统计量:最大值df.max(),最小值df.mix(),非NaN统计df.count(),中位数df.median(),标注差df.std()
累计:累计求和df.cumsum()
排序:df.sorf_index()按照索引排序,df.rank()按照rank值排名
分组:df.groupby(col)按照列col分组
其他:df.cov()协方差矩阵,相关系数df.corrwith(df2),一维数据的区间分布pd.cut()
pandas其他操作
excel操作:to_excel/read_excel对excel文件的操作
csv操作:to_csv/read_csv对csv文件操作
数据合并:df.append()/df.concat()/pd.merge(df1,df2)
3.Matplotlib
Matplotlib简介
一、在数据分析领域它有很大的地位,而且具有丰富的扩展,能实现更强大的功能。
二、可以生成绘图,包括直方图,功率谱,条形图,错误图,散点图等。
三、文档完善,语法简洁,案例丰富,个性化程度高。
matplotlib基本操作流程
创建画布:导入工具包,设置画布属性
绘图:读取数据,根据场景绘制所需图形。设置图形属性:图例、刻度、网格等。
显示:显示图片、保存图片。
图形属性设置
1.画布plt.figure(figsize,dpi)
2.图例plt.lengend()
3.刻度plt.xtickets()
4.网格plt.grid()
5.描述信息plt.xlabel()、plt.ylabel()
6.颜色和形状plt.plot(x,y,color=颜色属性,linestyle='线的格式',label="")
常见图形及使用场景
柱形图:用来反映分类项目之间的比较,也可以用来反映时间趋势。
折线图:用来反映随时间变化的趋势。
饼图:用来反映相关性或分布关系。
散点图:用来反映相关性或分布关系。
4.Pillow
pillow简介
1.图像处理:图像基本处理、像素处理、颜色处理等。
2.对图像进行批处理、生成图像预览、图像格式 转换等。
3.其他操作:屏幕捕获、图像滤镜等。
Pillow中的常见模块
1.ImageDraw
2.ImageFilter
3.ImageChops
4.ImageEnhance
5.ImageWin
6.ImageOps
PIL.Image
图像读取PIL.Image.open(img)
图像处理PIL.image.eval(image,*args)
图像生成PIL.image.new(mode,size,color=0)
其他PIL.Image.merge(mode, bands)
图像操作对象
查看图片的格式img.format
查看图像的尺寸img.size
查看图像的色彩空间img.mode
图像缩放img.thumbnail
图像展示img.show
保存图像img.save
图像翻转img.transpose
图像切割img.crop
图像逆时针旋转img.rotate
重置图片尺寸img.resize
ImageOps.autocontrast(image,cutoff=0,ignore=None)最大化(标准化)图像对比度
ImageOps.crop(image,border=0)从所有四个侧面移除相同数量的像素。此功能适用于所有图像模式。
ImageOps.deform(image,deformer,resample=2)变形图像
ImageOps.expand(image,border=0,fill=0)为图像添加边框(填充)
ImageOps.fit(image,size,method=0,bleed=0.0,centering=(0.5,0.5))将图像裁剪为指定的尺寸
ImageOps.flip(image)垂直翻转图像(从上到下)
ImageOps.grapscale(image)将图像转换为灰度
ImageOps.mirror(image)水平翻转图像(从左到右)
ImageOps.solarize(image,threshold=128)反转高于阈值的所有像素值
ImageOps.invert(image)图像取反
ImageFilter
ImageFilter.BoxBlur(radius)通过将每个像素设置为在每个方向上延伸半径像素的方框中的像素的平均值来模糊图像。
ImageFilter.GaussianBlur(radius=2)高斯模糊滤镜
ImageFilter.Kernel(size,kernel,scale=None,offset=0)创建一个卷积核
ImageFilter.MedianFliter(size=3)创建中值滤波器,在给定大小的窗口中选取中值像素值。
ImageFilter.MinFliter(size=3)创建一个min过滤器。在给定大小的窗口中选取最低像素值。
ImageFilter.MaxFliter(size=3)创建一个最大过滤器。选择具有给定大小的窗口中的最大像素值。
ImageEnhance
ImageEnhance.Contrast(image)调整图像对比度
ImageEnhance.Color(image)调整图像色彩平衡。
ImageEnhance.Brightness(image)调整图像亮度
ImageEnhance.Sharpness(image)调整图像清晰度
ImageDraw绘图功能
ImageDraw.Draw(im,mode=None)画图
ImageDraw.ellipse(xy,fill=None,outline=None,width=0)绘制椭圆
ImageDraw.line(xy,fill=None,width=0,joint=None)直线
ImageDraw.polygon(xy,fill=None,outline=None)多边形
5.Scikit-learn
Scikit-learn
算法API:scikit-learn中包含了回归算法、分类算法和聚类算法等。
特征工程:包含了特征抽取、特征预处理和特征降维等。
数据集:包含一些用于学习的简单数据集,如波士顿房价、癌症预测等。
模型调优:模型的一些调优功能,如网格搜索、k折交叉验证等。
特征工程
归一/标准化:sklearn.preprocessing.MinMaxScaler,sklearn.preprocessing.StandardScaler
编码:sklearn.preprocessing.OneHotEncoder,sklearn.preprocessing.LabelEncoder
特征选择(低方差特征过滤):sklearn.feature_selection.VarianceThreshold
特征降维(PCA):sklearn.decomposition.PCA
分类算法
逻辑回归:sklearn.linear_model.LogisticRegression
决策树:sklearn.tree.DecisionTreeClassifier(criterion,max_depth=None,random_state=None)
KNN:sklearn.neighbors.KNeighborsClassifier(n_neighbors,algorithm='auto')
朴素贝叶斯:sklearn.naive_bayes.MultinomialNB(alpha=1.0)
回归与聚类
线性回归:sklearn.linear_model.LinearRegression(fit_intercept=True)
线性回归:sklearn.linear_model.SGDRegressor(loss,fit_intercept=True,learning_rate)
K-means:sklearn.cluster.KMeans(n_clusters=8,init='k-means++')
DBSCAN:sklearn.cluster.DBSCAN
模型调优
K折交叉验证:为算法设置CV参数,即指定交叉验证的K(sklearn.model_selection.KFold)
网格搜索(Grid Search):sklearn.model_selection.GridSearchCV(estimator,param_grid=None,cv=None)
随机搜索:sklearn.model_selection.RandomizedSearchCV
模型保存和加载
模型保存:
from sklearn.externals import joblib
joblib.dump(model,'model.pkl')
模型加载:
from sklearn.externals import joblib
estimator = joblib.load('model.pkl')
6.Scikit-image
scikit-image是一种开源的用于图像处理的Python包
skimage:分割、分析、色彩操作、过滤、几何变换
Scikit-image模块介绍
io:读取、保存和显示图片和视频
color:图片的颜色空间变换
feature:特征检测和提取,如纹理分析等
filters:图像增强,边缘检测,排序滤波器,自动阈值等
io模块的使用
图片读取skimage.io.imread(img)
展示图片skimage.io.imshow(arr)
保存图片skimage.io.imsave(fname,arr) # arr图像矩阵
内置图片skimage.data.img # img为图片名称
color模块-颜色空间变换
convert_colorspace(arr,fromspace,tospace):将图像数组转换为新的颜色空间。fromspace要转换的颜色空间,tospace转换为的颜色空间。
rgb2hsv(rgb):RGB到HSV颜色空间转换
hsv2rgb(hsv):HSV到RGB色彩空间转换
separate_stains(rgb,conv_matrix):RGB染色空间转换
rgb2gray(rgb):计算RGB图像的亮度
deltaE_cie76:颜色空间中两点之间的欧几里德距离
filters
gaussian:多维高斯滤波器
sobel:使用sobel变换查找边缘幅度
prewitt:使用prewitt变换查找边缘幅度
scharr:使用scharr变换查找边缘幅度
特征检测和提取skimage.feature
greycomatrix:计算灰度共生矩阵。灰度共生矩阵是在图像上的给定偏移处共同出现的灰度值的直方图。
hessian_matrix_eigvals:计算Hessian矩阵的特征值。
daisy:为给定图像密集地提取DAISY特征描述符
canny:边缘使用canny算法过滤图像
hog:提取给定图像的定向梯度直方图
其他操作
util.img_as_float(image,force_copy=False):将图像转换为浮点格式
util.img_as_int(image,force_copy=False):将图像转换为16位有符号整数格式
util.pad(array,pad_width,mode,**kwargs):填充图像
util.crop(ar,crop_width,copy=False,order='K'):沿每个维度通过crop_width裁剪阵列ar。
util.invert(image,signed_float=False):反转图像
measure.compare_psnr(im_true,im_test,data_range=None):计算图像的峰值信噪比(PSNR)
7.Keras
Keras简介
Keras是一个由python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶
应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化。
特点
用户友好:Keras提供一致而简洁的API,能够极大减少一般应用下用户的工作量。
模块性:网络层、损失函数、优化器、初始化策略、激活函数,正则化方法都是独立的模块。
易扩展性:只需要仿照现有的模块编写新的类或函数即可。
Keras模块
keras.layers:用于生成神经网络层,如全连接、RNN、CNN等。
keras.models:创建网络模型时所用的API
keras.optimizers:包含了优化器API,如SGD、Adam等优化器
keras.activations:创建神经网络结构时所需要的激活函数
keras.datasets:keras中封装好的数据集,如mnist手写数字等学习用的数据集
keras.applications:提供了带有与训练权值的深度学习模型,这些模型可以用来进行预测、特征提取和微调(fine-tuning)
keras.layers
全连接:keras.layers.Dense(N,activation='')
CNN:keras.layers.Conv2D(N,kernel_shape,padding,activation)
RNN:keras.layers.SimpleRNN(N,activation='')
Dropout:keras.layers.Dropout(rate,seed='')
keras.models
模型创建:Model=keras.models.Sequential()
模型训练/预测:Model.fit()/Model.predict()
保存/加载模型:Model.save()/keras.models.load()
keras.optimizers优化器(from keras import optimizers)
optimizers.SGD(lr,decay,momentum,nesterov)
optimizers.RMSprop(lr,rho,epsilon)
optimizers.Adadelta(lr,rho,epsilon,decay)
optimizers.Adam(lr,beta_1,beta_2,epsilone,decay,amsgrad=False)
keras.activations激活函数(from keras import activations)
activations.softmax
activations.relu
activations.tanh
activations.elu
keras.datasets数据集
CIFAR10:from keras.datasets import cifar10
IMDB:from keras.datasets import imdb
波士顿房屋价格:from keras.datasets import boston_housing
newswire话题分类:from keras.datasets import reuters
keras创建模型
一、model.Sequential([layers.Dense(n,input_shape)])
二、Model=model.Sequential()
Model.add(layers.Dense(n,input_shape))
三、InputShape=Input()
Layer1=layers.Decse(n)(InputShape)
8.Tensorflow
TensorFlow简介
TensorFlow是谷歌开源的第二代用于数字计算的软件库。
TensorFlow计算框架可以很好的支持深度学习的各种算法,但它的应用不局限于深度学习,可以支持多种计算平台,系统稳定性较高。
源于TensorFlow的开源性,方便大家维护更新,提高开发效率。
TensorFlow特点
灵活可扩展、多语言、多平台、GPU、运算性能强、分布式
TensorFlow基本概念
张量、计算图、算子、会话、变量、API
TensorFlow开发基本介绍
定义输入节点-->定义“学习参数”的变量-->定义“运算”-->优化函数,优化目标-->
初始化所有变量-->模型训练,迭代更新参数到最优解-->测试模型-->使用模型
神经网络搭建
全连接网络:tf.layers.dense
CNN:tf.layers.conv2d、tf.layers.max_pooling2d
RNN:tf.nn.rnn_cell.BasicRNNCell
其他:tf.contrib.rnn.BasicLSTMCell、tf.contrib.rnn.GRUCell
9.Pytorch
PyTorch
用户友好:提供易于使用的API,它在python上运行,操作非常简单。这个
框架中的代码执行非常简单。
简单:PyTorch库认为是pythonic,它可以利用python环境提供的所有服务和功能。
自由化:PyTorch提供了一个提供动态计算图的出色平台。因此,用户可以在运行时更改它们。
torch
torch.is_tensor(obj)判断是否是张量
torch.is_storage如果obj是一个pytorch storage对象,则返回True
torch.eye创建一个数据为对角矩阵的张量
torch.from_numpy将numpy.ndarray转换为pytorch的Tensor
torch.ones返回一个全为1的张量
torch.rand返回一个张量,包含了区间[0,1)的均匀分布中抽取的一组随机数
Tensor
索引:torch.index_select,torch.nonzero(获取非零元素的索引)
切片:torch.unbind
连接/分割:torch.cat,torch.chunk,torch.gather,torch.split
转置:torch.t(input,out=None),torch.transpose(input,dim0,dim1,out=None)
比较元素相等性:torch.eq(input,other,out=None),torch.equal(tensor1,tensor2)
排序:torch.sort(input,dim=None,descending=False,out=None)
取前k的值:torch.topk(input,k,dim=None,largest=True,sorted=True,out=None)
torch.nn
添加层:add_module(name,module)
获取子模型:children()
设备切换:cuda/cpu(device_id=None)
containers容器
torch.nn.Module
torch.nn.ModuleList
torch.nn.Sequential
torch.nn.ParameterList
layers
torch.nn.Linear(in_features,out_features,bias=True)
torch.nn.Dropout(p=0.5,inplace=False)
torch.nn.ReLU(inplace=False),torch.nn.Tanh,torch.nn.Softmax
cnn
torch.nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True)
torch.nn.MaxPool2d(kernel_size,stride=None,padding=0,dilation=1,return_indices=False,ceil_mode=False)
torch.nn.BatchNorm2d(num_features,eps=1e-05,momentum=0.1,affine=True)
recurrent layers
torch.nn.RNN(args,*kwargs)
torch.nn.LSTM(args,*kwargs)
torch.nn.GRU(args,*kwargs)
loss functions
torch.nn.MSELoss(size_average=True)
torch.nn.CrossEntropyLoss(weight=None,size_average=True)
optimizer
torch.optim.SGD
torch.optim.RMSprop
torch.optim.Adagrad
torch.optim.Adam
- 点赞
- 收藏
- 关注作者
评论(0)