數(shù)據(jù)分析50圖(三) —— 散點(diǎn)線性回歸與置信區(qū)間
前言
華羅庚說過
數(shù)缺形時少直觀,形少數(shù)時難入微.
這句話第一次聽還是初中數(shù)學(xué)老師上二次方程課時說的.最近看到了3blue1brown對線性代數(shù)的直觀解釋感覺豁然開朗,于是我又撿起了兒時對美妙數(shù)學(xué)的興趣. 發(fā)現(xiàn)一個博客,數(shù)據(jù)可視化很好的例子,決定花些時間和大家一起解讀一下
例程來自:https://www.machinelearningplus.com/plots/matplotlib-histogram-python-examples//
感謝b站UP "菜菜TsaiTsai" 分享這個博客.
正式開始“50圖”的學(xué)習(xí)丰嘉。首先的一個系列 <u>關(guān)聯(lián)圖</u> 這通常能告訴我們幾個事物之間的聯(lián)系玫锋。
例3涝婉、4
from matplotlib import patches
from scipy.spatial import ConvexHull
import warnings; warnings.simplefilter('ignore')
import seaborn as sns
sns.set_style("white")
# Import Data
df = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/mpg_ggplot2.csv")
df_select = df.loc[df.cyl.isin([4,8]), :]
# Plot
sns.set_style("white")
gridobj = sns.lmplot(x="displ", y="hwy", hue="cyl", data=df_select,
height=7, aspect=1.6, robust=True, palette='tab10',
scatter_kws=dict(s=60, linewidths=.7, edgecolors='black'))
# Decorations
gridobj.set(xlim=(0.5, 7.5), ylim=(0, 50))
plt.title("Scatterplot with line of best fit grouped by number of cylinders", fontsize=20)
plt.show()
解析
解析下代碼流程
這是第一次使用 seaborn 包财忽,他是matplotlib 的高級封裝丑掺,我第一次見他就被他色彩吸引了媳谁。
- 導(dǎo)入數(shù)據(jù)
- 畫圖(沒錯seaborn 就是這么方便)
- 添加標(biāo)注說明
先看下這個不太友好的數(shù)據(jù)集
manufacturer | model | displ | year | cyl | trans | drv | cty | hwy | fl | class | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | audi | a4 | 1.8 | 1999 | 4 | auto(l5) | f | 18 | 29 | p | compact |
1 | audi | a4 | 1.8 | 1999 | 4 | manual(m5) | f | 21 | 29 | p | compact |
2 | audi | a4 | 2.0 | 2008 | 4 | manual(m6) | f | 20 | 31 | p | compact |
3 | audi | a4 | 2.0 | 2008 | 4 | auto(av) | f | 21 | 30 | p | compact |
4 | audi | a4 | 2.8 | 1999 | 6 | auto(l5) | f | 16 | 26 | p | compact |
這次用到的數(shù)據(jù)是 displ党饮,hwy肝陪,cyl。 what? 不太懂車啊刑顺,這是什么鬼縮寫见坑。一頓谷歌搜索。
- displ 排量
- cyl 氣缸數(shù)
- hwy 高速公路上時每加侖里程數(shù)
- cty 城市道路時每加侖里程數(shù)
方法參數(shù)解釋
df.loc[df.cyl.isin([4,8]), :] 選擇 cyl 等于 4和8的 所有行
sns.lmplot()
- x捏检,y荞驴,data: seaborn 包接受DateFrame 對象的行標(biāo)簽作為輸入,也就是選取列名為displ 的這一列數(shù)據(jù)作為x輸入
- hue=‘cyl’:這里如果用hue贯城,用col則2個點(diǎn)集會分別在2張圖上顯示而不是在同一張圖上
- height熊楼,sapect: 整個畫布的尺寸設(shè)置
- robust: 如果為真,表示回歸要求是 魯棒的
- palette: 色彩盤能犯,我很喜歡他的配色除了 tab10 還有很多其他可用
- scatter_kws: 我們知道 seaborn 是matpoltlib 的高級封裝 所以scatter_kws 表示原有的plt.scatter() 的關(guān)鍵字參數(shù)
圖像
應(yīng)用
圖中2條回歸線的意思兩側(cè)的點(diǎn)離這條線的距離方差最小鲫骗,從直觀上的解釋。舉個例子 有一個射擊手瞄準(zhǔn)這條線射擊踩晶,所有彈孔離著根線越近則他的成績越好执泰,而方差表示他的發(fā)揮很穩(wěn)定,每次都能打出8環(huán)渡蜻。淡色的陰影面積表示术吝,這些點(diǎn)落在直線周圍的置信度。還是射擊手的例子茸苇,假設(shè)這個射擊手的發(fā)揮穩(wěn)定程度不變排苍,那么他下次射擊的成績大概率會在這個陰影里。
所以我們可以從這圖上看出什么学密?
可以猜想如果汽車技術(shù)沒什么革新淘衙,用原有的技術(shù)設(shè)計(jì)。要制造一臺4杠腻暮,4.0排量的汽車彤守,那么他的油耗應(yīng)該是在每加侖15-20英里的樣子毯侦。
如果你是個觀察力非凡的畫家,你可能會發(fā)現(xiàn)圖中具垫,有些點(diǎn)顏色較深而有些點(diǎn)顏色淺侈离。這并不是繪圖的錯誤,或者視覺差做修。這是因?yàn)橛泻芏嗤瑯游恢玫狞c(diǎn)重疊在一起霍狰。許多統(tǒng)計(jì)數(shù)據(jù)都會有這種重疊的特點(diǎn)抡草,比如高考的成績饰及,一類商品的熱度。
那么如何用可視化的方式展現(xiàn)出同一車型的熱度康震?帶著這個問題我們下期見燎含。
下期預(yù)告
例2 散點(diǎn)圖重合點(diǎn)抖動與計(jì)數(shù) —— 回到頻次統(tǒng)計(jì)