日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

seaborn 数据可视化(一)连续型变量可视化

發(fā)布時(shí)間:2023/12/29 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 seaborn 数据可视化(一)连续型变量可视化 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.綜述

Seaborn其實(shí)是在matplotlib的基礎(chǔ)上進(jìn)行了更高級(jí)的API封裝,從而使得作圖更加容易,圖像也更加美觀,本文基于seaborn官方API還有自己的一些理解。

1.1.樣式控制:axes_style() and set_style()

seaborn提供了5個(gè)主題:

darkgrid 黑色網(wǎng)格(默認(rèn))
whitegrid 白色網(wǎng)格
dark 黑色背景
white 白色背景
ticks 帶刻度線

一個(gè)簡(jiǎn)單的小例子:

import numpy as np
sns.set_style("darkgrid")
def cosplot(flip=1): #余弦偏移 x = np.linspace(0,14,100) for i in range(1,7): plt.plot(x,np.cos(x+i*.5)*(7-i)*flip) cosplot() # 默認(rèn)無(wú)參數(shù)狀態(tài),就是刪除上方和右方的邊框 sns.despine()

1.2 .color_palette()創(chuàng)建調(diào)色板

1.2.1 .分類(lèi)調(diào)色板——分類(lèi)色板(定性)是在區(qū)分沒(méi)有固定順序的數(shù)據(jù)時(shí)最好的選擇

current_palette = sns.color_palette()
sns.palplot(current_palette)

  

默認(rèn)顏色主題共有六種不同的變化分別是:deep, muted, pastel, bright, dark, 和 colorblind。

current=sns.color_palette('dark')
sns.palplot(current)

二.連續(xù)型單變量的數(shù)據(jù)可視化

  在單變量為分類(lèi)變量的時(shí)候,數(shù)據(jù)的分析會(huì)相對(duì)簡(jiǎn)單,可以通過(guò)非常簡(jiǎn)單的sum,mean等統(tǒng)計(jì)變量直接查看自己需要的統(tǒng)計(jì)信息基本就能滿足我們的需求,非常簡(jiǎn)單,并不會(huì)給我們帶來(lái)非常大的困難,但是如果單變量為連續(xù)變量的時(shí)候,數(shù)據(jù)的可視化就較為重要.

  一般最常見(jiàn)的對(duì)連續(xù)單變量特征進(jìn)行分析的情況會(huì)出現(xiàn)在回歸等問(wèn)題中,這個(gè)時(shí)候通過(guò)可視化的方式可以很快地讓我們了解到數(shù)據(jù)的分布情況以及是否有奇異值的情況.這對(duì)我們數(shù)據(jù)的處理能帶來(lái)極大的方便.

  常用的函數(shù):hist、kdeplot、distplot

  首先導(dǎo)入所需要的包

  

import numpy as np
import pandas as pd
import warnings
from scipy import stats,integrate
import matplotlib.pyplot as plt
warnings.filterwarnings('ignore')   #忽略了警告錯(cuò)誤的輸出
import seaborn as sns
sns.set_style("darkgrid")
sns.set(color_codes=True)  #set( )設(shè)置主題,調(diào)色板更常用  

np.random.seed(sum(map(ord, "distributions")))

ord()函數(shù)它以一個(gè)字符(長(zhǎng)度為1的字符串)作為參數(shù),返回對(duì)應(yīng)的ASCII數(shù)值,或者Unicode數(shù)值.
  如果所給的Unicode字符超出了你的Python定義范圍,則會(huì)引發(fā)一個(gè)TypeError的異常.
  利用np.random.seed()函數(shù)設(shè)置相同的seed,每次生成的隨機(jī)數(shù)相同。如果不設(shè)置seed,則每次會(huì)生成不同的隨機(jī)數(shù).

2.1.hist

繪制直方圖的方法在matplotlib中,這個(gè)方法可以直觀地讓我們了解到散落在各個(gè)區(qū)間的數(shù)據(jù)的情況(數(shù)據(jù)分布),hist默認(rèn)為10個(gè)bins.

x=np.random.normal(size=100)
plt.hist(x)

2.2.kdeplot

對(duì)于連續(xù)的變量,光看直方圖肯定是不夠的,數(shù)據(jù)的分布的觀察也是必不可少的,這時(shí)我們需要借用KDE(Kernel Density Estimate)函數(shù)

seaborn.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)
Parameters:
a : Series, 1d-array, or list. #一維數(shù)組
bins : argument for matplotlib hist(), or None, optional #設(shè)置分桶數(shù)
hist : bool, optional #控制是否顯示分桶柱子
kde : bool, optional #控制是否顯示核密度估計(jì)圖
rug : bool, optional #控制是否顯示觀測(cè)實(shí)例豎線
fit : random variable object, optional #控制擬合的參數(shù)分布圖形
{hist, kde, rug, fit}_kws : dictionaries, optional
Keyword arguments for underlying plotting functions.
vertical : bool, optional #顯示正交控制
If True, oberved values are on y-axis.

sns.kdeplot(x,shade=True)

  KDE的帶寬bandwidth(bw)參數(shù)控制估計(jì)對(duì)數(shù)據(jù)的擬合程度,與直方圖中的bin(數(shù)據(jù)切分?jǐn)?shù)量參數(shù))大小非常相似。 它對(duì)應(yīng)于我們上面繪制的內(nèi)核的寬度。

sns.kdeplot(x)
sns.kdeplot(x, bw=.2, label="bw: 0.2")
sns.kdeplot(x, bw=2, label="bw: 2")
plt.legend();

2.3.displot

  上面的兩個(gè)函數(shù)非常實(shí)用,但是還有一個(gè)非常好的函數(shù),distplot 函數(shù),該函數(shù)包含了絕大多數(shù)單變量可視化的能力,可以直接使用distplot實(shí)現(xiàn)上面兩個(gè)函數(shù)的功能,此外它還可以繪制出其他的近似分布.

  默認(rèn)的distplot能直接繪制出我們需要的直方圖以及對(duì)應(yīng)的核密度估計(jì)(KDE).

sns.distplot(x)

  當(dāng)然如果不想看到kde曲線,我們可以直接將kde去掉,如果只想看kde曲線,我們也可以把直方圖去掉.

  繪制kde曲線一般會(huì)比較耗時(shí),所以可以直接將kde設(shè)置為False

sns.distplot(x,kde=False,rug=True)

  當(dāng)然也可以將直方圖省去.僅看kde曲線

sns.distplot(x,hist=False,rug=True)

此外,distplot可以繪制很多分布,函數(shù)內(nèi)部涵蓋了大量的分布函數(shù),可以用來(lái)近似擬合數(shù)據(jù).這對(duì)于熟悉統(tǒng)計(jì)的人來(lái)說(shuō)十分有用.例如gamma函數(shù)等等.

y=np.random.gamma(6,size=200)

sns.distplot(y,bins=20,rug=True)

sns.distplot(y,bins=20,kde=False,rug=True,fit=stats.gamma)

二.連續(xù)(continious)的二元變量特征的數(shù)據(jù)可視化

  上面的數(shù)據(jù)可視化是基于單變量的,常常用于對(duì)連續(xù)形式的label(回歸問(wèn)題中較為常見(jiàn))進(jìn)行觀察處理.實(shí)際問(wèn)題中我們不會(huì)僅僅只對(duì)數(shù)據(jù)進(jìn)行觀察,還需要進(jìn)行預(yù)測(cè)等,自然而然的,數(shù)據(jù)之間關(guān)系的分析就顯得非常重要.此處我們開(kāi)始對(duì)數(shù)據(jù)之間的關(guān)系進(jìn)行分析,主要是兩個(gè)連續(xù)變量之間的相關(guān)性分析.關(guān)于涉及分類(lèi)變量的部分我們會(huì)在第后續(xù)分進(jìn)行介紹.

  這一節(jié)主要介紹如下幾個(gè)函數(shù)matplotlib.pyplot中的scatterplot函數(shù)以及seaborn中的jointplot函數(shù).

用多元高斯分布函數(shù)生成兩個(gè)變量x,y.

mean,cov=[0,1],([0.5,1],(1,0.5))
data=np.random.multivariate_normal(mean,cov,size=200)
df=pd.DataFrame(data,columns=['x','y'])
df.head()

2.1.Scatterplot函數(shù)

  這個(gè)函數(shù)是通用的,尤其是兩個(gè)變量都是連續(xù)型變量的時(shí)候,我們希望看看在二維平面上二者之間的關(guān)系時(shí)必然會(huì)先想到散點(diǎn)圖函數(shù),當(dāng)然當(dāng)數(shù)據(jù)比較多的時(shí)候,建議采樣觀察[,不然真的很耗時(shí).
  通過(guò)Scatterplot我們可以很容易的發(fā)現(xiàn)一些數(shù)據(jù)的分布規(guī)律,是否有簇的存在等等,在涉及類(lèi)似于經(jīng)緯度的問(wèn)題時(shí),我們經(jīng)常會(huì)通過(guò)scatterplot看數(shù)據(jù),然后考慮聚類(lèi)等操作.

plt.scatter(df['x'].values,df['y'].values)

  

2.2.Jointplot函數(shù)

  Scatterplot函數(shù)是非常實(shí)用的,但是用過(guò)seaborn的伙伴肯定都還會(huì)知道joinplot這個(gè)函數(shù),不僅能方便的繪制散點(diǎn)圖,同時(shí)還融入了很多其他功能,還可以幫我們直接進(jìn)行一些簡(jiǎn)單的模型的擬合(linear regression,etc)

  joinplot這個(gè)函數(shù)顯示兩個(gè)變量之間的雙變量(或聯(lián)合)關(guān)系以及每個(gè)變量的單變量(或邊際)分布和軸。

還可以在圖像加回歸擬合直線

sns.jointplot(x='x',y='y',data=df,kind='reg')

Hexbin繪圖和KDE繪圖,這兩個(gè)繪圖大致可以更加直觀的炫酷的看出數(shù)據(jù)的一個(gè)分布情況(例如hex圖,越白的地方數(shù)據(jù)就越少,基本都沒(méi)有數(shù)據(jù)在那里).

因?yàn)樗@示了落在六邊形倉(cāng)內(nèi)的觀測(cè)數(shù)。該圖適用于較大的數(shù)據(jù)集。通過(guò)matplotlib plt.hexbin函數(shù)和jointplot()中的樣式可以實(shí)現(xiàn)。

sns.jointplot(x="x", y="y", data=df,kind ='hex' );

使用白色背景效果:

with sns.axes_style("white"):
    sns.jointplot(x=x, y=y, kind="hex", color="k");

在seaborn中,這種圖用等高線圖顯示,可以在jointplot()中作為樣式傳入?yún)?shù)使用:

sns.jointplot(x="x", y="y", data=df, kind="kde");

還可以使用kdeplot()函數(shù)繪制二維核密度圖:

f, ax = plt.subplots(figsize=(6, 6))
sns.kdeplot(df.x, df.y, ax=ax)
sns.rugplot(df.x, color="g", ax=ax)
sns.rugplot(df.y, vertical=True, ax=ax);

連續(xù)地顯示雙變量密度,可以簡(jiǎn)單地增加n_levels參數(shù)增加輪廓級(jí)數(shù):

f, ax = plt.subplots(figsize=(6, 6))
cmap = sns.cubehelix_palette(as_cmap=True, dark=0, light=1, reverse=True)
sns.kdeplot(df.x, df.y, cmap=cmap, n_levels=60, shade=True);

plot_joint函數(shù),該繪圖函數(shù)可以將很多繪圖形式放在同一張圖表中,更加豐富我們的視圖.

g = sns.jointplot(x="x", y="y", data=df, kind="kde", color="m")
g.plot_joint(plt.scatter, c="w", s=30, linewidth=1, marker="+")

g.ax_joint.collections[0].set_alpha(0)
g.set_axis_labels("$X$", "$Y$");

2.3.pairplot函數(shù)

該函數(shù)會(huì)同時(shí)繪制數(shù)據(jù)中所有特征兩兩之間的關(guān)系圖.因?yàn)閜airplot是建立在pairgrid之上,所以可以將中間的很多函數(shù)進(jìn)行變換,例如下面的kde的例子.

默認(rèn)對(duì)角線histgram,非對(duì)角線kdeplot

iris=sns.load_dataset('iris')  #導(dǎo)入經(jīng)典的鳶尾花數(shù)據(jù)
sns.pairplot(iris);

對(duì)于jointplot()和JointGrid之間的關(guān)系,pairplot()函數(shù)是建立在一個(gè)PairGrid對(duì)象上的,可以直接使用它來(lái)獲得更大的靈活性:

g = sns.PairGrid(iris)
g.map_diag(sns.kdeplot)
g.map_offdiag(sns.kdeplot, cmap="Blues_d", n_levels=6);

g = sns.PairGrid(iris)
g.map_diag(sns.kdeplot)
g.map_offdiag(sns.kdeplot);

參考:

https://zhuanlan.zhihu.com/p/27471537

https://blog.csdn.net/qq_34264472/article/details/53814653

https://blog.csdn.net/cymy001/article/details/78418432

https://www.kesci.com/apps/home/project/59f687e1c5f3f511952baca0

總結(jié)

以上是生活随笔為你收集整理的seaborn 数据可视化(一)连续型变量可视化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 谁有免费的黄色网址 | 成人午夜av在线 | 色情毛片 | 一区二区日韩av | 国内特级毛片 | 高清一区二区三区视频 | 美女裸体网站久久久 | 国产黄色大片视频 | 亚洲熟妇无码久久精品 | 九色91av | 麻豆午夜 | 欧美aa在线观看 | 波多野结衣av一区二区全免费观看 | 火影黄动漫免费网站 | 激情影院内射美女 | 久久久久久片 | 久久久www成人免费无遮挡大片 | 上海贵妇尝试黑人洋吊 | 欧美在线一二三四区 | www.白白色 | 天天草比 | 日韩精品第一页 | 夜夜操夜夜爱 | 日韩精品一区二区在线播放 | 国产一区二区自拍 | 一区二区三区亚洲视频 | 国产精品毛片一区二区 | 国产一区二区小说 | 久久久精品免费观看 | 国产第100页 | 福利视频不卡 | 天堂最新 | 久久精品97 | 人人爽人人爽人人爽人人爽 | 亚洲大尺度在线观看 | 老司机午夜免费精品视频 | 欧美日韩a | 深夜成人在线 | 日韩欧美精品在线播放 | 狠狠爱婷婷 | 中文字幕在线播放av | av资源部| 成人毛片基地 | 俄罗斯美女一级爱片 | 亚洲精品无码久久久 | 亚洲国产精彩中文乱码av | 青苹果av| 亚洲人一区二区三区 | 97操碰| 玩弄白嫩少妇xxxxx性 | 国产欧美日韩在线播放 | 四级黄色片 | 舌奴调教日记 | 美女三级网站 | 92国产精品| 咪咪色在线视频 | 亚洲一级黄色大片 | 加勒比精品 | 福利视频免费观看 | 亚洲国产清纯 | 国产视频二区三区 | 成人羞羞国产免费游戏 | 俺啪也| 国产v亚洲v天堂无码久久久 | av网站久久 | 大尺度av | 午夜av导航 | 亚洲91视频| 久久橹| 日本免费观看视频 | 60分钟| 欧美大片免费观看 | 制服丝袜先锋 | 日韩在线视频你懂的 | 久久久艹| 色一情一伦一子一伦一区 | 国产乱码精品 | 一久久久久 | 欧美激情片在线观看 | 日韩av手机在线免费观看 | 欧美日日日| 两个女人互添下身爱爱 | 国产丝袜高跟 | 亚洲一区二区日韩 | 精品国产自 | 99有精品 | 91视频看片 | 在线看的免费网站 | 亚洲喷潮 | 怡红院av久久久久久久 | 99久久久无码国产精品免费蜜柚 | 久久人人爽人人爽人人 | 中文字幕在线观看免费 | jizz韩国| 91第一页| 无码人妻aⅴ一区二区三区69岛 | 一本色道无码道dvd在线观看 | av不卡在线播放 | 亚洲一区欧洲一区 |