python数据科学-多变量数据分析
總第87篇
01|寫在前面:
在前面我們研究了單列(變量)數(shù)據(jù)情況,現(xiàn)實(shí)中的案例大多都是多列(變量)的,即影響一件事情的因素有多個(gè),我們除了要看單列數(shù)據(jù)以外還需要看看這不同列之間是否存在某些聯(lián)系。常見的關(guān)系有四種:無關(guān)聯(lián)、強(qiáng)關(guān)聯(lián)、簡(jiǎn)單關(guān)聯(lián)和多元(非簡(jiǎn)單)關(guān)聯(lián)。接下來具體看看具體如何借助可視化對(duì)多變量數(shù)據(jù)進(jìn)行分析。
你可以看:python數(shù)據(jù)科學(xué)-單變量數(shù)據(jù)分析
02|數(shù)據(jù)導(dǎo)入:
本次的數(shù)據(jù)是用的sklearn庫自帶的iris數(shù)據(jù)集,那么iris數(shù)據(jù)集是什么呢?
Iris數(shù)據(jù)集是機(jī)器學(xué)習(xí)中常用的分類實(shí)驗(yàn)數(shù)據(jù)集,也是一個(gè)多變量分析的數(shù)據(jù)集,數(shù)據(jù)集共包含150個(gè)數(shù)據(jù)集,3個(gè)分類,每50個(gè)數(shù)據(jù)集是一類,每個(gè)數(shù)據(jù)包含4個(gè)屬性(也可以理解成是特征值)。
源數(shù)據(jù)集部分這里的前四列就是四個(gè)屬性值,第五列是數(shù)據(jù)集所屬的分類。數(shù)據(jù)的分類有Iris-setosa,Iris-versicolor,Iris-virginica三種,為了便于后續(xù)的進(jìn)一步分析,把這三種分類分別用0,1,2代替。
#加載相關(guān)庫 from sklearn.datasets import load_iris from sklearn.preprocessing import scale import numpy as np import matplotlib.pyplot as plt import itertools %matplotlib inline plt.style.use("bmh")在導(dǎo)入相關(guān)庫以后就可以加載對(duì)應(yīng)的數(shù)據(jù)集進(jìn)來啦。
#加載Iris數(shù)據(jù)集 data=load_iris() x=data["data"]#將屬性值賦值給x y=data["target"]#將對(duì)象/分類值賦值給y col_names=data["feature_names"]#列名 print("col_names:{}".format(np.unique(col_names)))#將列名打印 print("target:{}".format(np.unique(y)))#將分類打印確認(rèn)一下導(dǎo)入的列名和分類數(shù)據(jù)是否正常。
#iris數(shù)據(jù)集的列名,分別表示花萼長(zhǎng)度、花萼寬度、花瓣長(zhǎng)度、花瓣寬度 col_names:['petal length (cm)' 'petal width (cm)' 'sepal length (cm)' 'sepal width (cm)'] #數(shù)據(jù)集的分類 target:[0 1 2]#分別用0,1,2代替03|數(shù)據(jù)可視化:
3.1多變量數(shù)據(jù)概覽:
當(dāng)數(shù)據(jù)集有多個(gè)變量時(shí),我們先看看這些變量的一個(gè)整體分布情況,比較有效的表達(dá)方式就是箱型圖。
#繪制圖表 fig=plt.figure(1) ax=fig.add_subplot(111) ax.boxplot(x) ax.set_xticklabels(data["feature_names"]) 各屬性值的箱型圖通過上圖我們可以看出,petal width的中位數(shù)值最小,speal length的最大;speal width有異常值,而其他屬性沒有;speal length中的最大值時(shí)四個(gè)屬性值中的最大值,petal width最小值是四個(gè)屬性值中的最小值。
3.2變量間關(guān)系分析
我們一般分析兩個(gè)變量之間的關(guān)系時(shí),最簡(jiǎn)單粗暴的一種方法就是繪制這兩個(gè)變量的直線,然后觀察這兩條直線的走勢(shì),兩條直線越接近(也可以用兩者的夾角大小去衡量),說明相關(guān)性越強(qiáng),比如下面這兩個(gè)圖。
data=range(1101,1113) sales_A=range(200,2600,200) sales_B=range(1950,150,-150) fig=plt.figure() ax1=fig.add_subplot(111) ax1.plot(data,sales_A,label="sales_A") ax2=ax1.twinx() ax2.plot(data,sales_B,c="r",label="sales_B") ax1.legend(loc="upper center") ax2.legend(loc="lower center") AB兩種產(chǎn)品銷量隨時(shí)間變化該圖反映了兩種產(chǎn)品隨著時(shí)間的推移成負(fù)相關(guān)關(guān)系,在日常業(yè)務(wù)中新產(chǎn)品上市時(shí),新舊產(chǎn)品之間會(huì)出現(xiàn)這種關(guān)系,比如你把A產(chǎn)品當(dāng)作iphone8,B產(chǎn)品當(dāng)作iphone7,7銷量開始下降的時(shí)候正是8上市的時(shí)候。
data=range(1101,1113) sales_A=range(200,2600,200) sales_B=range(150,1950,150) plt.subplot() plt.plot(data,sales_A,label="sales_A") plt.plot(data,sales_B,label="sales_B") plt.legend(loc="best") AB兩種產(chǎn)品銷量隨時(shí)間變化通過這個(gè)圖可以看出AB兩產(chǎn)品的銷量是呈比較強(qiáng)的相關(guān)性,在業(yè)務(wù)中很典型的一個(gè)例子就是啤酒和尿布之間的關(guān)系。
當(dāng)然了,如同第一節(jié)中提到的,可視化圖表只是讓我們對(duì)整體的數(shù)據(jù)有一個(gè)大概的認(rèn)識(shí),不太具體。關(guān)于衡量?jī)蓚€(gè)變量具體的相關(guān)性大小可以用相關(guān)性系數(shù)來衡量。這里先不涉及。
上面的相關(guān)性分析常用于變量是“時(shí)序數(shù)據(jù)”的情景下,用來表示隨著時(shí)間的推移,兩個(gè)變量呈現(xiàn)一個(gè)什么樣的關(guān)系。那么“非時(shí)序數(shù)據(jù)”我們?cè)撛趺雌颇?#xff1f;
這里用散點(diǎn)圖去進(jìn)行分析,之所以用散點(diǎn)圖是因散點(diǎn)圖是以點(diǎn)的形式表示,可以通過看不同變量的分布情況來分析不同變量之間的關(guān)系。
#將多變量數(shù)據(jù)進(jìn)行可視化 #繪出6個(gè)子圖形,包括以下幾列:花萼長(zhǎng)度、花萼寬度、花瓣長(zhǎng)度、花瓣寬度(四個(gè)屬性值兩兩組合) plt.close("all") plt.figure(1) #繪制一個(gè)3行2列的圖 subplot_start=321 col_numbers=range(0,4) #給圖形添加標(biāo)簽 col_pairs=itertools.combinations(col_numbers,2) plt.subplots_adjust(left=0.2,right=1.2,top=2.0,bottom=0.6,hspace=0.5) for col_pair in col_pairs:plt.subplot(subplot_start)plt.scatter(x[:,col_pair[0]],x[:,col_pair[1]],c=y)plt.xlabel(col_names[col_pair[0]])plt.ylabel(col_names[col_pair[1]])subplot_start+=1 不同屬性值兩兩組合后的散點(diǎn)圖上圖中三種顏色代表三個(gè)不同的分類,通過圖表可以看出petal length和petal width對(duì)類的分類效果最好(當(dāng)petal length<2,petal width<1時(shí),屬于“0”類,當(dāng)兩者繼續(xù)往大時(shí)屬于“1”類,達(dá)到最大時(shí),屬于“2”類),而speal legenth和speal width對(duì)類的分類效果最差。
小小的總結(jié)一下:如果是要看兩個(gè)變量隨著時(shí)間推移呈現(xiàn)出什么樣的關(guān)系時(shí),可以繪制折線圖參考;而如果要看兩個(gè)變量與所屬類別之間關(guān)系時(shí),可以繪制散點(diǎn)圖進(jìn)行參考。
04|涉及到的知識(shí)點(diǎn):
同一個(gè)坐標(biāo)中繪制兩條或多條折線(啤酒和尿布的例子)。
同一個(gè)坐標(biāo)中繪制兩條Y軸(iphone8和iphone7的例子)。
箱型圖怎么看(多變量數(shù)據(jù)概覽)。
關(guān)于每篇中涉及到的知識(shí)點(diǎn)說明:
近期的文章,我會(huì)在每篇文章的末尾加上涉及到的知識(shí)點(diǎn)這一項(xiàng),該項(xiàng)內(nèi)容為我個(gè)人覺是一些比較新的點(diǎn),或者是我覺得有必要提的點(diǎn),僅此而已。
總結(jié)
以上是生活随笔為你收集整理的python数据科学-多变量数据分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快手直播怎么定位到别的城市(快手短视频A
- 下一篇: python数据科学-数据预处理