【datawhale-gitmodel】以波士顿房价数据进行数据分析和数据可视化
以波士頓房價數據進行數據分析
文章目錄
- 以波士頓房價數據進行數據分析
- 1 總體分析步驟
- 2 數據加載
- 3 數據處理
- 3.1 缺失值處理
- 3.2 變量分析
- 3.2.1 單變量分析
- 3.2.1.1 分析標簽
- 3.2.1.2 離散型變量
- 3.2.1.3 連續型變量
- 3.2.2 多變量分析
- 3.2.2.1 數據圖描述相關性
- 3.2.2.2 數據描述相關性
1 總體分析步驟
- 單一變量
- 多變量關系
2 數據加載
- 查看是否有缺失值
- 查看數據是否正常,例如A是一個處于[0,1]之間的比值,但在展示中A>1,說明數據不正常,需要修正
- 查看統計數據是否正常,例如方差特別大,在后續的處理中,可以采用一些降維的手段如:主成分分析(PCA)等
3 數據處理
3.1 缺失值處理
- 查看樣本總數為506,非空值不等于506的即為含有缺失值的特征
- 柱狀圖
-
熱力圖 sns.heatmap(null.isnull())
-
熱力圖可以幫助看出缺失值的位置,如果有些樣本出現大量特征缺失的情況,在樣本足夠大的情況下也可以考慮刪除
- 缺失值超過95%的特征,會考慮刪除,因為意義不大
- 方差特別小的特征也考慮刪除,或者說取值唯一的特征是沒有意義的;舉例,如果在一次考試中,大家的數學成績都是100分,那么是沒有辦法通過數學成績來區分每位同學的能力的,也就是說數學這門課沒有區分性,不具有分析的意義,可以刪掉
- 為了更好的呈現,將特征的唯一值個數加入到上面的統計表中,并封裝成函數,便于之后使用
-
這是比較簡單粗暴的方式,之后會細講缺失值處理方式
-
可視化查看 sns.heatmap(null.isnull()) 此時已沒有缺失值
3.2 變量分析
- 研究思路:首先研究單變量的數據類型、分布情況、是否有離群值等情況,再研究變量之間的關系:相關性分析、分組統計等
3.2.1 單變量分析
3.2.1.1 分析標簽
- 首先是分析數據標簽,要明白任務的需求。數據挖掘任務主要分為兩類:回歸與分類。
- 回歸指標簽值是連續值的任務,例如用到的數據集,要求預測房價信息,房價是一個連續的變量,因此這樣的任務屬于回歸問題(Regression)
- 分類指標簽值離散的任務,例如鳶尾花(Iris)數據集,收集三種鳶尾花的萼片長度,寬度等信息,要求根據這些信息預測鳶尾花屬于哪種類別,因此標簽就是1,2,3,代表三類鳶尾花。這種任務屬于分類任務
house["MEDV"].nunique() 查看標簽的取值:因為取值個數比較多,可以大致判斷本次任務屬于回歸型任務。 但這并非判斷標準,只是一個判斷的參考,主要還是分析題目的任務需求
house["MEDV"].describe() 打印標簽的統計信息:
- 從統計信息可以大致看出,分布還算正常,沒有太大的方差(方差太大說明數據不太可能是正態的,因為不夠集中)。對于是否有離群值后面我們需要通過箱線圖或者散點圖等可視化分析后才能得知
- 如圖
- 看到整個分布稍微有一點左偏,因此在實戰中,我們可以采用對數化的方法,讓標簽分布接近正態
- 變換之后,可以將取值小于1.5的取值視為異常值,將其舍棄
- 對于分類任務而言,可以采用此法畫出它的頻率分布直方圖,或者更直接的畫條形統計圖,如果分類的標簽分布是相似的,那么我們可以直接建模;如果標簽出現很明顯的一高一低的情況,說明標簽的分布不均衡,在建模前需要做一些操作(例如:欠采樣、調整損失函數),再進行建模。否則會出現一個問題,模型對出現頻率低的樣本非常不敏感。好比數學考試前的復習題,大多數都是數列題,只有一個是立體幾何題目,大家花了很多精力研究數列,結果一到考試,出現了很多立體幾何的題目,這時候我們復習的效果其實會顯得很差。模型訓練的過程就類似考前復習的過程,所以我們在建模前要盡量保證標簽的均衡性。
3.2.1.2 離散型變量
- 對于類別型變量而言,一般采用柱狀圖的方式觀察其分布
- 從這個表的最后一列可以看出CHAS,RAD這樣的變量的取值比較符合分類變量的特征
3.2.1.3 連續型變量
- 從上面的圖像可以看出,有些變量實際上是有相似(A高B高)的分布情況的,或者相反的分布情況的(A高B低),這樣的性質稱為變量之間的相關性
- 正相關:如果特征A的增加(減少)會導致特征B增加(減少),即特征A與特征B變化趨勢相同
- 負相關:如果特征A的增加(減少)會導致特征B減少(增加),即特征A與特征B變化趨勢相反
- 當兩個變量呈正相關或者負相關時,我們稱兩個變量是相關的。如果兩個變量有較強的相關性時,將這些變量一起用,會有很多是冗余的
- 因為變量之間有較強的相關性,那么變量與變量之間是可以相互表示的,所以在建模時,需要盡可能消除特征之間的共線性,也就是盡量使用相關性比較小的特征,這樣可以減少訓練時間,使得模型的學習效果更好
3.2.2 多變量分析
3.2.2.1 數據圖描述相關性
- 對于可視化而言,最簡單的方式就是將兩個特征對應的坐標點在坐標系下描出來,研究他們的變化趨勢
- 每一個點的坐標試一個二元組(xA(i),yB(i))\left(x_{A}^{(i)}, y_{B}^{(i)}\right)(xA(i)?,yB(i)?),其中 xA(i)x_{A}^{(i)}xA(i)? 表示第 iii 個樣本,特征 AAA 的取值; yB(i)y_{B}^{(i)}yB(i)? 表示第 iii 個樣本,特征 BBB 的取值
- 用seaborn庫可以很直觀的任意兩個特征之間的散點圖
- 成對畫出任意兩列的散點圖 sns.pairplot(house[["AGE", "DIS"]], size = 3) #size是子圖的大小
- 如圖
- 成對畫出任意兩列的散點圖(帶對數處理) sns.pairplot(np.log(house[["NOX", "DIS"]]), size = 3) #size是子圖的大小
- 如圖
- 成對畫出任意兩列的散點圖(帶對數處理)sns.pairplot(np.log(house[["RM", "LSTAT", "MEDV"]]), size = 3 #size是子圖的大小
3.2.2.2 數據描述相關性
-
公式: σij=cov?(Xi,Xj)=E[(Xi?μi)(Xj?μj)]\sigma_{i j}=\operatorname{cov}\left(X_{i}, X_{j}\right)=E\left[\left(X_{i}-\mu_{i}\right)\left(X_{j}-\mu_{j}\right)\right]σij?=cov(Xi?,Xj?)=E[(Xi??μi?)(Xj??μj?)]
其中, Xi,XjX_{i}, X_{j}Xi?,Xj? 是第 i,ji, ji,j 個隨機變量,因此我們可以誘導出協方差矩陣:Σ=(σij)\Sigma=\left(\sigma_{i j}\right)Σ=(σij?) -
若變量 XiX_{i}Xi? 的較大值主要與另一個變量 XjX_{j}Xj? 的較大值相對應,而兩者的較小值也相對應,則可稱兩變量傾向于表現出相似的行為,協方差為正;當一個變量的較大值主要對應于另一個變量的較小值時,則可稱兩變量傾向于表現出相反的行為,協方差為負
協方差的正負號顯示變量的相關性
-
當有了一系列數據后,我們可以認為這一系列數據是從對應的分布里面采樣得到的,可以當成隨機變量的觀測值,因此可以直接代入算期望
- 但是協方差只能看出正相關和負相關,其大小并沒有意義,這是因為每個特征的量綱不同,直接乘積后求期望,所得到的量綱又是不盡相同,因此我們需要對其做“無量綱化”處理
-
公式:r(X,Y)=Cov?(X,Y)Var?[X]Var?[Y]r(X, Y)=\frac{\operatorname{Cov}(X, Y)}{\sqrt{\operatorname{Var}[X] \operatorname{Var}[Y]}}r(X,Y)=Var[X]Var[Y]?Cov(X,Y)?
其中, Cov?(X,Y)\operatorname{Cov}(X, Y)Cov(X,Y) 為 XXX 與 YYY 的協方差, Var?[X]\operatorname{Var}[X]Var[X] 為 XXX 的方差, Var?[Y]\operatorname{Var}[Y]Var[Y] 為 YYY 的方差∣r(X,Y)∣≤1|r(X, Y)| \leq 1∣r(X,Y)∣≤1
∣r(X,Y)∣=1|r(X, Y)|=1∣r(X,Y)∣=1 的充要條件是, 存在常數 a,ba, ba,b, 使得 P{Y=a+bX}=1P\{Y=a+b X\}=1P{Y=a+bX}=1
-
相關系數定量地刻畫了 XXX 和 YYY 的相關程度,范圍是[?1,1][-1,1][?1,1]。絕對值越靠近0,表示不相關,絕對值越靠近1,表示相關性越強
小于 0 表示負相關;大于 0 表示正相關
-
XXX 和 YYY 完全相關的含義是在概率為 1 的意義下存在線性關系,于是 ∣r(X,Y)∣|r(X, Y)|∣r(X,Y)∣ 是一個可以表征 XXX 和 YYY 之間線性關系緊密程度量
當 ∣r(X,Y)∣|r(X, Y)|∣r(X,Y)∣ 較大時,通常說 XXX 和 YYY 相關程度較好;當 ∣r(X,Y)∣|r(X, Y)|∣r(X,Y)∣ 較小時,通常說 XXX 和 YYY 相 關程度較差; 當 XXX 和 YYY 不相關,通常認為 XXX 和 YYY 之間不存在線性關系,但并不能排除 XXX 和 YYY 之間可能存在其他關系。
- 單項相關系數的計算
- 全表相關系數的計算
注:本文整理內容來自datawhale社區(《Joyful Pandas》)和gitmodel開源課程,并補充查找的其他資料。
總結
以上是生活随笔為你收集整理的【datawhale-gitmodel】以波士顿房价数据进行数据分析和数据可视化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C/C++函数指针与指针函数
- 下一篇: Hadoop环境搭建(6) -- 克隆