- Seaborn 教程
- Seaborn - 首頁
- Seaborn - 簡介
- Seaborn - 環境設定
- 匯入資料集和庫
- Seaborn - 圖形美觀
- Seaborn - 調色盤
- Seaborn - 直方圖
- Seaborn - 核密度估計
- 視覺化成對關係
- Seaborn - 繪製分類資料
- 觀測值的分佈
- Seaborn - 統計估計
- Seaborn - 繪製寬格式資料
- 多面板分類圖
- Seaborn - 線性關係
- Seaborn - Facet Grid
- Seaborn - Pair Grid
- 函式參考
- Seaborn - 函式參考
- Seaborn 有用資源
- Seaborn - 快速指南
- Seaborn - 有用資源
- Seaborn - 討論
Seaborn - 線性關係
大多數情況下,我們使用包含多個定量變數的資料集,並且分析的目標通常是將這些變數相互關聯。這可以透過迴歸線來完成。
在構建迴歸模型時,我們經常檢查多重共線性,我們需要檢視所有連續變數組合之間的相關性,並在存在多重共線性時採取必要的措施將其消除。在這種情況下,以下技術會有所幫助。
繪製線性迴歸模型的函式
Seaborn 中有兩個主要的函式用於視覺化透過迴歸確定的線性關係。這些函式是regplot()和lmplot()。
regplot 與 lmplot
| regplot | lmplot |
|---|---|
| 接受以各種格式表示的 x 和 y 變數,包括簡單的 NumPy 陣列、Pandas Series 物件或 Pandas DataFrame 中變數的引用。 | 將資料作為必需引數,並且必須將 x 和 y 變數指定為字串。此資料格式稱為“長格式”資料。 |
現在讓我們繪製圖形。
示例
在此示例中,使用相同的資料繪製 regplot 和 lmplot 圖。
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.regplot(x = "total_bill", y = "tip", data = df)
sb.lmplot(x = "total_bill", y = "tip", data = df)
plt.show()
輸出
您可以看到兩個圖之間的大小差異。
當其中一個變數取離散值時,我們也可以擬合線性迴歸。
示例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.lmplot(x = "size", y = "tip", data = df)
plt.show()
輸出
擬合不同型別的模型
上面使用的簡單線性迴歸模型非常易於擬合,但在大多數情況下,資料是非線性的,並且上述方法無法概括迴歸線。
讓我們使用 Anscombe 的資料集以及迴歸圖 -
示例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x="x", y="y", data=df.query("dataset == 'I'"))
plt.show()
在這種情況下,資料非常適合線性迴歸模型,方差較小。
讓我們再看一個數據偏差較大的示例,這表明最佳擬合線效果不佳。
示例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'"))
plt.show()
輸出
該圖顯示了資料點與迴歸線的較大偏差。可以使用lmplot()和regplot()視覺化此類非線性、高階關係。這些可以擬合多項式迴歸模型來探索資料集中簡單的非線性趨勢 -
示例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'"),order = 2)
plt.show()
輸出
廣告