Python数据分析与应用 课件 第11、12章 scipy;Seaborn_第1页
Python数据分析与应用 课件 第11、12章 scipy;Seaborn_第2页
Python数据分析与应用 课件 第11、12章 scipy;Seaborn_第3页
Python数据分析与应用 课件 第11、12章 scipy;Seaborn_第4页
Python数据分析与应用 课件 第11、12章 scipy;Seaborn_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第11章scipy

《Python数据分析与应用》ScipyScipy用于统计、优化、整合、线性代数模块、傅里叶变换、信号和图像处理等,常用的scipy工具有stats(统计学工具包)、erpolate(插值,线性的,三次方)、cluster(聚类)、signal(信号处理)等。安装scipy之前必须安装numpyScipy官方网址。ScipyScipy功能函数功能函数积分egrate线性代数scipy.linalg信号处理scipy.signal稀疏矩阵scipy.sparse空间数据结构和算法scipy.spatial统计学scipy.stats最优化scipy.optimize多维图像处理scipy.ndimage插值erpolate聚类scipy.cluster曲线拟合scipy.curve_fit文件输入/输出scipy.io傅里叶变换scipy.fftpack稀疏矩阵

在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵。coo_matrix()用于创建稀疏矩阵,语法如下所示。

coo_matrix((data,(i,j)),[shape=(M,N)])矩阵运算fromscipy.linalgimport*importnumpyasnp

A=np.matrix('[1,2;3,4]')print(A)print(A.T)#转置矩阵print(A.I)#逆矩阵[[12][34]][[13][24]][[-2.1.][1.5-0.5]]线性方程组求解

fromscipyimportlinalgimportnumpyasnpa=np.array([[1,3,5],[2,5,-1],[2,4,7]])b=np.array([10,6,4])x=linalg.solve(a,b)print(x)非线性方程组求解

fromscipy.optimizeimportfsolvefrommathimportsindeff(x):

x0,x1,x2=x.tolist()

return[5*x1+3,4*x0*x0-2*sin(x1*x2),x1*x2-1.5]

#f计算方程组的误差,[1,1,1]是未知数的初始值result=fsolve(f,[1,1,1])

print(result)print(f(result))函数最值

fromscipy.optimizeimportminimizeimportnumpyasnp

#计算1/x+x的最小值deffun(args):a=argsv=lambdax:a/x[0]+x[0]returnvif__name__=="__main__":args=(1)#ax0=np.asarray((2))#初始猜测值res=minimize(fun(args),x0,method='SLSQP')print(res.fun)print(res.success)print(res.x)最小二乘法

最小二乘法可以理解为就是通过最小化误差的平方和来寻找最佳的匹配函数,常用于曲线拟合。一般情况下拟合的曲线为k*x+b函数,即寻找最好的k、b值实现分类效果。 scipy的leastsq函数用于最小二乘法的拟合

scipy.optimize.leastsq(func,x0,args=())数据分布泊松分布正态分布指数分布均匀分布正态分布正态分布(Normaldistribution),也称“常态分布”,又名高斯分布(Gaussiandistribution),正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形,又称之为钟形曲线。scipy.norm实现正态分布。binomial=stats.binom.pmf(k,n,p)指数分布

指数分布描述的是事件发生的时间间隔,主要用于描述电子元器件的寿命。

scipy.expon实现指数分布。泊松分布#平均值,方差,偏度,峰度mean,var,skew,kurt=poisson.stats(mu,moments='mvsk')泊松分布用于描述单位时间/面积内,随机事件发生的次数。例如,譬如:某一服务设施一定时间内到达的人数、一个月内机器损坏的次数等。指数分布指数分布描述的是事件发生的时间间隔,主要用于描述电子元器件的寿命。scipy.expon实现指数分布。统计量统计量包括平均数、中位数、众数、样本均值(即n个样本的算术平均值),样本方差(即n个样本与样本均值之间平均偏离程度的度量)等,用于数据进行分析、检验的变量。

众数是指在统计分布上具有明显集中趋势点的数值,是出现次数最多的数值,代表数据的一般水平。scipy.stats提供mode函数实现求众数。scipy.stats模块提供了pearsonr函数计算皮尔森相关系数,语法如下所示:fromscipy.statsimportpearsonrpearsonr(x,y)参数解释如下:x为特征,y为目标变量。图像处理图像处理和分析通常被看作是对二维值数组的操作。scipy.ndimage提供了许多通用的图像处理和分析功能,支持图像矩阵变换、图像滤波、图像卷积等功能。图像旋转Scipy提供ndimage.rotate函数用于旋转图像。rotate_flower=ndimage.rotate(flower,45)plt.imshow(rotate_flower)plt.title('rotate_flower')图像平滑

图像平滑是一种区域增强的算法,用于突出图像的低频成分、主干部分或抑制图像的噪声和干扰高频成分,使图像亮度平缓渐变、减少突变梯度,改善图像质量的图像处理方法。图像平滑分为:高斯滤波中值滤波高斯滤波scipy.ndimage模块提供gaussian_filter函数。fromscipyimportndimageimportmatplotlib.imageasmpimgimportmatplotlib.pyplotaspltflower=mpimg.imread('d://flower.jpg')flower1=ndimage.gaussian_filter(flower,sigma=3)plt.imshow(flower1)plt.show()scipy.ndimage模块的median_filte函数实现中值滤波。fromscipyimportndimageimportmatplotlib.imageasmpimgimportmatplotlib.pyplotaspltflower=mpimg.imread('d://flower.jpg')flower1=ndimage.median_filter(flower,size=10)plt.imshow(flower1)plt.show()中值滤波图像锐化图像锐化就是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使得图像变得清晰。scipy.ndimage模块的prrwitt函数实现图像锐化。fromscipyimportndimageimportmatplotlib.imageasmpimgimportmatplotlib.pyplotaspltflower=mpimg.imread('d://flower.jpg')flower1=ndimage.prewitt(flower)plt.imshow(flower1)plt.show()第12章Seaborn

《Python数据分析与应用》SeabornSeaborn是基于matplotlib的图形可视化python包,便于做出各种统计图表。Pandas与Seaborn都是使用matplotlib作图,但是两者区别较大,如下所示:(1)Pandas善于简单绘图,而更丰富的图使用Seaborn绘制。(2)Pandas没有太多的参数优化图形,Seaborn提供大量参数调整图形。安装Seaborn绘图特色Matplotlib绘图Seaborn绘图importmatplotlib.pyplotaspltx=[1,3,5,7,9,11,13,15,17,19]y_bar=[3,4,6,8,9,10,9,11,7,8]y_line=[2,3,5,7,8,9,8,10,6,7]plt.bar(x,y_bar)plt.plot(x,y_line,'-o',color='y‘)importmatplotlib.pyplotaspltx=[1,3,5,7,9,11,13,15,17,19]y_bar=[3,4,6,8,9,10,9,11,7,8]y_line=[2,3,5,7,8,9,8,10,6,7]importseabornassnssns.set()#声明使用Seaborn样式plt.bar(x,y_bar)plt.plot(x,y_line,'-o',color='y‘)相比于Matplotlib默认的纯白色背景,Seaborn默认的浅灰色网格背景看起来的确要细腻舒适一些。而柱状图的色调、坐标轴的字体大小也都有一些变化。图表分类(1)矩阵图(2)回归图(3)关联图(4)类别图(5)分布图数据集seaborn内置数据集,包括常见的泰坦尼克、鸢尾花等经典数据集。

使用load_dataset函数调用数据集。绘图设置绘图元素主题设置调色板设置绘图元素

seaborn通过set_context方法设置绘图元素参数,主要影响标签、线条和其他元素的效果,与style有点区别,不会影响整体的风格。语法如下所示:seaborn.set_context(context=None,font_scale=1,rc=None)主题设置Seaborn通过set_style设置darkgrid,whitegrid,dark,white,ticks5种主题风格。其中,white和ticks包含没有必要的上边框和右边框。另外,sns.despine()用于去掉图形右边和上面的边线。调色板颜色不但代表各种特征,而且提高整个图的观赏性。Seaborn使用color_palette函数实现分类色板。绘图seaborn共有5个大类21种图。(1)关系类图表(Relationalplots)(2)分类图表(Categoricalplots)(3)分布图(Distributionplot)(4)回归图(Regressionplots)(5)矩阵图(Matrixplots)直方图Seaborn提供distplot函数实现importnumpyasnpimportmatplotlib.pyplotaspltimportseabornassns#生成100个成标准正态分布的随机数x=np.random.normal(size=100)

#kde=True,进行核密度估计sns.distplot(x,kde=True)#密度曲线KDEplt.show()核密度图

核密度图一般与直方图搭配使用,显示数据的分布的“疏密程度”,核密度图显示为拟合后的曲线,“峰”越高表示数据越“密集”。Seaborn提供kdeplot函数实现。importnumpyasnpimportmatplotlib.pyplotaspltimportseabornassnsnp.random.seed(4)#设置随机数种子Gaussian=np.random.normal(0,1,1000)#创建一组平均数为0,标准差为1,总个数为1000的符合标准正态分布的数据ax.hist(Gaussian,bins=25,histtype="stepfilled",normed=True,alpha=0.6)sns.kdeplot(Gaussian,shade=True)plt.show()散点图Seaborn提供stripplot函数实现。importseabornassnsimportmatplotlib.pyplotaspltsns.set(style="whitegrid",color_codes=True)tips=sns.load_dataset("tips")#“小费”数据集sns.stripplot(data=tips)plt.show()箱型图Seaborn提供boxplot函数实现。importseabornassnsimportmatplotlib.pyplotasplt

sns.set_style("whitegrid")tips=sns.load_dataset("tips")#载入自带数据集“tips”,研究三个变量关系,是否抽烟与日期为分类变量,消费是连续变量#结论发现吸烟者在周末消费明显大于不吸烟的人ax=sns.boxplot(x="day",y="total_bill",hue="smoker",data=tips,palette="Set3")plt.show()小提琴图

小提琴图其实是箱线图与核密度图的结合,箱线图展示了分位数的位置,小提琴图用于展示任意位置的密度。通过小提琴图可以知道哪些位置的密度较高。在小提琴图中,白点是中位数,黑色盒形的范围是上四分位点和下四分位点,细黑线表示须,表示离群点的离群程度,越长表示离群点越远。鸢尾花(Iris)数据集每类50个数据,每个数据包含花萼长度(sepallength)、花萼宽度(sepalwidth)、花瓣长度(petallength)、花瓣宽度(petalwidth)4个属性条形图Seaborn提供barplot函数实现。importseabornassnsimportnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltx=np.arange(8)y=np.array([1,5,3,6,2,4,5,6])df=pd.DataFrame({"x-axis":x,"y-axis":y})sns.barplot("x-axis","y-axis",palette="RdBu_r",data=df)plt.xticks(rotation=90)plt.show()热力图Seaborn提供heatmap函数实现。importnumpyasnp;np.random.seed(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论