1. 程式人生 > >Python高階視覺化庫seaborn迴歸分析(基礎整理)

Python高階視覺化庫seaborn迴歸分析(基礎整理)

探索變數間的關係

兩個變數:lmplot,繪製迴歸模型

(1.1)兩個維度資料都是連續的:散點圖 + 線性迴歸 + 95%置信區間
(1.2)一個維度資料是連續的,一個維度資料是離散的,連續軸抖動x_jitter引數
(1.3)x_estimator引數將“離散取值維度”用均值和置信區間代替散點

擬合不同模型

(1.1)lmplot預設引數線性擬合
(1.2)lmplot的order引數,設定高階擬合
(1.3)lmplot的robust引數,設定抗噪聲魯棒性
(1.4)lmplot的logistic引數,設定擬合曲線是logistic(二類分類模型)

某特徵內部分組對比

(1.1)lmplot的hue引數按cloumns分組,一圖多組
(1.2)lmplot的hue引數按cloumns分組,加col引數——列增加,加row引數——行增加
(1.3)lmplot的col引數分出來多組後,col_wrap引數控制圖形顯示排布;size引數設定圖形大小,aspect引數設定圖形橫縱比

——————————————————————————————————

探索變數間的關係

%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib as mpl
import
matplotlib.pyplot as plt import seaborn as sns sns.set(color_codes=True) np.random.seed(sum(map(ord, "regression"))) tips = sns.load_dataset("tips") tips.head()

這裡寫圖片描述

兩個變數:lmplot,繪製線性迴歸模型

(1.1)兩個維度資料都是連續的:散點圖 + 線性迴歸 + 95%置信區間

sns.lmplot(x="total_bill", y="tip", data=tips)

這裡寫圖片描述

(1.2)一個維度資料是連續的,一個維度資料是離散的,連續軸抖動x_jitter引數

sns.lmplot(x="size", y="tip", data=tips, x_jitter=.08)

這裡寫圖片描述

(1.3)x_estimator引數將“離散取值維度”用均值和置信區間代替散點

sns.lmplot(x="size", y="tip", data=tips, x_estimator=np.mean)

這裡寫圖片描述

擬合不同模型

%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(color_codes=True)
anscombe = sns.load_dataset("anscombe")
anscombe.groupby('dataset').groups

#輸出類別:
{'I': Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype='int64'),
 'II': Int64Index([11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], dtype='int64'),
 'III': Int64Index([22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32], dtype='int64'),
 'IV': Int64Index([33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43], dtype='int64')}

(1.1)lmplot預設引數線性擬合

%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(color_codes=True)
anscombe = sns.load_dataset("anscombe")

sns.lmplot(x="x", y="y", data=anscombe.query("dataset == 'I'"),\
           ci=None, scatter_kws={"s": 80}) 
#anscombe.query("dataset == 'I'")是取anscombe
#ci預設值95,Size of the confidence interval for the regression estimate.Bootstrap

這裡寫圖片描述

(1.2)lmplot的order引數,設定高階擬合

sns.lmplot(x="x", y="y", data=anscombe.query("dataset == 'II'"), \
           order=2, ci=None, scatter_kws={"s": 80})  #lmplot預設order引數是一階的

這裡寫圖片描述

(1.3)lmplot的robust引數,設定抗噪聲魯棒性

sns.lmplot(x="x", y="y", data=anscombe.query("dataset == 'III'"), \
           robust=True, ci=None, scatter_kws={"s": 80})

這裡寫圖片描述

(1.4)lmplot的logistic引數,設定擬合曲線是logistic(二類分類模型)

sns.lmplot(x="total_bill", y="big_tip", data=tips, \
           logistic=True, y_jitter=.03, ci=None)

這裡寫圖片描述

(2)residplot評價不同模型擬合效果,畫殘差曲線(對比一階擬合直線的殘差)

%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(color_codes=True)
anscombe = sns.load_dataset("anscombe")

sns.residplot(x="x", y="y", data=anscombe.query("dataset == 'I'"), scatter_kws={"s": 80})

這裡寫圖片描述

sns.residplot(x="x", y="y", data=anscombe.query("dataset == 'II'"), scatter_kws={"s": 80})

這裡寫圖片描述

某特徵內部分組對比

(1.1)lmplot的hue引數按cloumns分組,一圖多組

%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(color_codes=True)
np.random.seed(sum(map(ord, "regression")))
tips = sns.load_dataset("tips")

sns.lmplot(x="total_bill", y="tip", hue="day", data=tips)

這裡寫圖片描述

(1.2)lmplot的hue引數按cloumns分組,加col引數——列增加,加row引數——行增加

sns.lmplot(x="total_bill", y="tip", hue="smoker", col="time", row="sex", data=tips, markers=["o", "x"], size=3)
#markers引數標示例項點,size引數控制圖形大小

這裡寫圖片描述

(1.3)lmplot的col引數分出來多組後,col_wrap引數控制圖形顯示排布;size引數設定圖形大小,aspect引數設定圖形橫縱比

sns.lmplot(x="total_bill", y="tip", col="day", data=tips, col_wrap=3, size=3, aspect=0.8)#

這裡寫圖片描述