基于python的全面數(shù)據(jù)探索(house prices)

總體思路:

理解問題:查看每個變量并且根據(jù)他們的意義和對問題的重要性進(jìn)行哲學(xué)分析。
單因素研究:只關(guān)注因變量(SalePrice)并且進(jìn)行更深入的了解。
多因素研究:分析因變量和自變量之間的關(guān)系。
基礎(chǔ)清洗:清洗數(shù)據(jù)集并且對缺失數(shù)據(jù),異常值和分類數(shù)據(jù)進(jìn)行一些處理。
檢驗假設(shè):檢查數(shù)據(jù)是否和多元分析方法的假設(shè)達(dá)到一致。

1、準(zhǔn)備工作:預(yù)期與驗證

為了理解數(shù)據(jù),我們觀察每個變量并且嘗試去理解每一個變量的意義以及這個變量和目標(biāo)問題的關(guān)系,雖然這個過程是耗時的,但是給我們感知數(shù)據(jù)。

為了分析熟悉數(shù)據(jù),我們可以用下面的列來創(chuàng)建excel電子表格。
(1)變量:變量名
(2)類型:變量類型的標(biāo)識。一般有兩種可能的值:數(shù)值型和類別型。數(shù)值型意味著變量是數(shù)字,類別型意味著變量值是類別。
(3)劃分:變量分塊的標(biāo)識。根據(jù)變量的意義分成不同的段。也就是有哪幾方面的特征。
(4)預(yù)期:我們可以預(yù)測變量對房價的影響,我們可以用高、中、低來作為房價的可能預(yù)期值。
(5)總結(jié):快速瀏覽一遍數(shù)據(jù)之后,總結(jié)一下特征的重要性
(6)注釋:給一些能想到的注釋。

雖然‘類型’和‘劃分’僅僅用于未來預(yù)測的參考,比如F1上不去,我改優(yōu)化哪方面的特征等,但是‘預(yù)期’這一列很重要,它給我們第六感去判斷哪個特征更重要。為了確定預(yù)期列,我們需要仔細(xì)閱讀特征描述文檔,并且問自己:
(1)當(dāng)我們買房子會不會考慮這個特征?
(2)這個特征的重要性怎么樣?
(3)這類信息在別的特征中是否表述過?

當(dāng)我們做完上面的事情以后,我們可以過濾電子表格,并且仔細(xì)觀察那些高預(yù)期、我們自己認(rèn)為重要的特征。然后,直奔主題,我們可以繪制這些我們認(rèn)為重要的變量和saleprice之間的關(guān)系散點圖,并且在結(jié)論這一欄給出我們預(yù)期的重要性。

經(jīng)歷上面的過程,得到了結(jié)論,總結(jié)出了下面四個特征有很重要的作用:OverallQual、YearBuilt、TotalBsmtSF、GrLivArea。但是根據(jù)散點圖判斷,是有局限性的,因為和我們的認(rèn)知違背,我們認(rèn)為location是最重要的特征,如果用箱形圖,可能會有不同的結(jié)論。

2.首先:分析單變量SalePrice

SalePrice是我們是去預(yù)測的值。
(1)描述統(tǒng)計結(jié)論,比如說均值、最值、中值、分位數(shù)、樣本數(shù)。



最小值不是一個非零的值,沒有一看一起就很異常的數(shù)據(jù)。最值都在可以接受的合理范圍內(nèi)。
(2)繪制直方圖

用seaborn繪圖,得出結(jié)論:
-偏離正態(tài)分布
-數(shù)據(jù)正偏
-有峰值

數(shù)據(jù)偏度和峰度度量:


偏度(Skewness)是描述某變量取值分布對稱性的統(tǒng)計量。如果偏度=0,和正態(tài)分布的偏度相同;Skewness>0,長尾巴拖在右邊;Skewness<0,長尾巴拖在左邊,Skewness越大,分布形態(tài)偏移程度越大。

峰度(Kurtosis)是描述某變量所有取值分布形態(tài)陡緩程度的統(tǒng)計量。它是和正態(tài)分布相比較的:Kurtosis=0,與正態(tài)分布的陡緩程度相同;Kurtosis>0,比正態(tài)分布的高峰更加陡峭;反之亦然。

3.與數(shù)值類型的關(guān)系

(1)grlivarea/saleprice的散點圖繪制
首先觀察一下saleprice和數(shù)值型變量grlivarea之間的關(guān)系。我們還是可以觀察到整體的趨勢的,隨著grlivarea的增大,saleprice有變高的趨勢。存在線性關(guān)系!


(2)totalbsmtsf/saleprice的散點圖繪制

通過觀察TotalBsmtSF和SalePrice之間有線性關(guān)系或者指數(shù)關(guān)系,當(dāng)TotalBsmtSF=0的時候,TotalBsmtSF對SalePrice沒有影響。

4.與類別類型的關(guān)系

(1)overallqual/saleprice的箱形圖
這里有一個問題,為什么我們不用散點圖了呢?那么先畫一個散點圖看下效果。如下圖:


可見也是有相互關(guān)系的,如果用箱形圖表示的話,會更加清晰:

(2)YearBuilt/saleprice的箱形圖
兩個變量之間的關(guān)系沒有很強(qiáng)的趨勢性,但是可以看出建筑時間較短的房屋價格更高。

總結(jié):

(1)GrLivArea和 TotalBsmtSF與SalePrice似乎線性相關(guān),并且都是正相關(guān)。 對于 TotalBsmtSF,線性關(guān)系的斜率十分的高。
(2)OverallQual和 YearBuilt與 SalePrice也有關(guān)系。OverallQual的相關(guān)性更強(qiáng), 箱型圖顯示了隨著整體質(zhì)量的增長,房價的增長趨勢。

我們只分析了四個變量,但是還有許多其他變量我們也應(yīng)該分析,這里的技巧在于選擇正確的特征,選擇哪些特征(特征選擇)而不是定義它們之間的復(fù)雜關(guān)系(特征工程),它們之間的復(fù)雜關(guān)系可以通過模型學(xué)習(xí)。

5 客觀分析

上面的分析過于主觀,我們應(yīng)該更客觀的去分析。
主要有三方面的分析:
-相關(guān)矩陣熱圖
-SalePrice相關(guān)矩陣熱圖
-最相關(guān)變量之間的散點圖

(1)相關(guān)矩陣熱圖


熱圖是觀察特征和特征、特征和label之間關(guān)系的一種快速的方式。首先,最吸引注意的是兩個紅色方塊。第一處指向TotalBsmtSF和1stFlrSF這兩個變量,第二處指向Garage相關(guān)的變量。這兩塊顯示了TotalBsmtSF和1stFlrSF的相關(guān)性、GarageCar和GarageArea的相關(guān)性很大。事實上,這種關(guān)聯(lián)性很強(qiáng),暗示它們存在多重共線性。我們能夠推斷當(dāng)變量間具有多重共線性,那么它們給出的信息也基本上是一樣的。Heatmaps恰恰可以檢測多重共線性的情況并決定選擇哪些特征,所以是一個非常重要的工具。

另外觀察特征和SalePrice之間的關(guān)系,可以看到GrLivArea、TotalBsmtSF、OverallQual,也看到了一些其他的變量應(yīng)該納入我們考慮。

(2)SalePrice相關(guān)矩陣熱圖
篩選與SalePrice相關(guān)性強(qiáng)的特征,重點觀察。



從圖中可以看出:

(a)'OverallQual', 'GrLivArea' 以及 'TotalBsmtSF' 與 'SalePrice'有很強(qiáng)的相關(guān)性。
(b)'GarageCars' 和 'GarageArea' 也是相關(guān)性比較強(qiáng)的變量. 車庫中存儲的車的數(shù)量是由車庫的面積決定的,它們就像雙胞胎,所以不需要專門區(qū)分'GarageCars' 和 'GarageArea' ,所以我們只需要其中的一個變量。這里我們選擇了'GarageCars'因為它與'SalePrice' 的相關(guān)性更高一些。
(c) 'TotalBsmtSF' 和 '1stFloor' 與上述情況相同,我們選擇 'TotalBsmtSF' 。
(d)'FullBath'幾乎不需要考慮。
(e)'TotRmsAbvGrd' 和 'GrLivArea'也是變量中的雙胞胎。
(f)'YearBuilt' 和 'SalePrice'相關(guān)性似乎不強(qiáng)。

(3)SalePrice和相關(guān)變量的散點圖

盡管我們已經(jīng)知道了一些主要特征,這一豐富的散點圖給了我們一個關(guān)于變量關(guān)系的合理想法。

其中,'TotalBsmtSF' 和 'GrLiveArea'之間的散點圖是很有意思的。我們可以看出這幅圖中,一些點組成了線,就像邊界一樣。大部分點都分布在那條線下面,這也是可以解釋的。地下室面積和地上居住面積可以相等,但是一般情況下不會希望有一個比地上居住面積還大的地下室。

'SalePrice' 和'YearBuilt' 之間的散點圖也值得我們思考。在“點云”的底部,我們可以觀察到一個幾乎呈指數(shù)函數(shù)的分布。我們也可以看到“點云”的上端也基本呈同樣的分布趨勢。并且可以注意到,近幾年的點有超過這個上端的趨勢。

4.缺失數(shù)據(jù)

關(guān)于缺失數(shù)據(jù)需要思考的重要問題:
(1)這一缺失數(shù)據(jù)的普遍性如何?
(2)缺失數(shù)據(jù)是隨機(jī)的還是有律可循?

這些問題的答案是很重要的,因為缺失數(shù)據(jù)意味著樣本大小的縮減,這會阻止我們的分析進(jìn)程。除此之外,以實質(zhì)性的角度來說,我們需要保證對缺失數(shù)據(jù)的處理不會出現(xiàn)偏離或隱藏任何難以忽視的真相。

下面對各個特征缺失值的情況進(jìn)行統(tǒng)計:

(1)當(dāng)超過15%的數(shù)據(jù)都缺失的時候,我們應(yīng)該刪掉相關(guān)變量且假設(shè)該變量并不存在。根據(jù)這一條,一系列變量都應(yīng)該刪掉,例如'PoolQC', 'MiscFeature', 'Alley'等等,這些變量都不是很重要,因為他們基本都不是我們買房子時會考慮的因素。

(2)'GarageX' 變量群的缺失數(shù)據(jù)量都相同,由于關(guān)于車庫的最重要的信息都可以由'GarageCars' 表達(dá),并且這些數(shù)據(jù)只占缺失數(shù)據(jù)的5%,我們也會刪除上述的'GarageX' 變量群。同樣的邏輯也適用于 'BsmtX' 變量群。

(3)對于 'MasVnrArea' 和 'MasVnrType',我們可以認(rèn)為這些因素并不重要。除此之外,他們和'YearBuilt' 以及 'OverallQual'都有很強(qiáng)的關(guān)聯(lián)性,而這兩個變量我們已經(jīng)考慮過了。所以刪除 'MasVnrArea'和 'MasVnrType'并不會丟失信息。

(4)最后,由于'Electrical'中只有一個損失的觀察值,所以我們刪除這個觀察值,但是保留這一變量。

總結(jié):處理空值,我們刪掉所有有較多空值的特征,除了特征Electrical,因為只有一個缺失值,所以刪除含該空值的樣本即可。

5.異常值處理

異常值也是我們應(yīng)該注意的東西。因為異常值能明顯的影響我們的模型,并且是一個有價值的信息來源,幫助我們對特定行為有更多的見解。異常值是一個復(fù)雜的主題,并且值得研究。在這里,我們將用SalePrice的標(biāo)準(zhǔn)差和一系列的散點來進(jìn)行快速分析。

(1)單因素分析
這里的關(guān)鍵在于如何建立閾值,定義一個觀察值為異常值。
我們對數(shù)據(jù)進(jìn)行正態(tài)化,意味著把數(shù)據(jù)值轉(zhuǎn)換成均值為0,方差為1的數(shù)據(jù)。


進(jìn)行正態(tài)化后,可以看出:
低范圍的值都比較相似并且在0附近分布。
高范圍的值離0很遠(yuǎn),并且7點幾的值遠(yuǎn)在正常范圍之外。

現(xiàn)在看,我們不把任何值作為異常值,但是我們應(yīng)該注意這兩個大于7的值。

(2)雙變量分析

這是之前GrLivArea和SalePrice關(guān)系散點圖:
(1)有兩個離群的'GrLivArea' 值很高的數(shù)據(jù),我們可以推測出現(xiàn)這種情況的原因。或許他們代表了農(nóng)業(yè)地區(qū),也就解釋了低價。 這兩個點很明顯不能代表典型樣例,所以我們將它們定義為異常值并刪除。

(2)圖中頂部的兩個點是七點幾的觀測值,他們雖然看起來像特殊情況,但是他們依然符合整體趨勢,所以我們將其保留下來。

刪除異常點:

核心部分

核心部分

“房價”到底是誰?

這個問題的答案,需要我們驗證根據(jù)數(shù)據(jù)基礎(chǔ)進(jìn)行多元分析的假設(shè)。

我們已經(jīng)進(jìn)行了數(shù)據(jù)清洗,并且發(fā)現(xiàn)了“SalePrice”的很多信息,現(xiàn)在我們要更進(jìn)一步理解‘SalePrice’如何遵循統(tǒng)計假設(shè),可以讓我們應(yīng)用多元技術(shù)。

應(yīng)該測量4個假設(shè)量:
(1)正態(tài)性:它的重要在于很多統(tǒng)計檢驗是基于正態(tài)分布的,在房價預(yù)測的問題中,我們只檢查了單變量的正態(tài)性。但是單變量正態(tài)性不能確保多變量的正態(tài)性,但是會其幫助作用。
(2)同方差性:假設(shè)在預(yù)測變量的范圍因變量表現(xiàn)出同等水平的方差
(3)線性:通過觀察散點圖,看是否為線性關(guān)系,如果不是,需要數(shù)據(jù)轉(zhuǎn)換,但是大多數(shù)情況下都是滿足線性關(guān)系的。
(4)相關(guān)錯誤缺失

正態(tài)性:

應(yīng)主要關(guān)注以下兩點:
直方圖 - 峰度和偏度。
正態(tài)概率圖 - 數(shù)據(jù)分布應(yīng)緊密跟隨代表正態(tài)分布的對角線。

首先,觀察SalePrice的分布曲線和正態(tài)概率圖,我們和正態(tài)曲線相比,有偏移,并且峰度大,而且概率圖偏離對角線,所以,SalePrice并不是正態(tài)的。但是,信息沒有丟失,簡單的數(shù)據(jù)變換就可以解決這個問題,為了防止正偏,log變換作用很好。

從圖中可以看出:
顯示出了偏度
大量為0的觀察值(沒有地下室的房屋)
含0的數(shù)據(jù)無法進(jìn)行對數(shù)變換,可用log(x+1)

同方差性:

最好的測量兩個變量的同方差性的方法就是圖像。
偏離同方差的特點是:散點呈錐形或者鉆石型。

未進(jìn)行l(wèi)og變換前,明顯是錐形,偏離同方差性。



log變換后

這就是正態(tài)化的作用,我們僅僅需要保證特征的正態(tài)化,就能解決同方差的問題。

6.虛擬變量

對類別變量進(jìn)行虛擬編碼:


結(jié)論

整個方案中,我們使用了很多《多元數(shù)據(jù)分析》中提出的方法。我們對變量進(jìn)行了哲學(xué)分析,不僅對'SalePrice'進(jìn)行了單獨分析,還結(jié)合了相關(guān)程度最高的變量進(jìn)行分析。我們處理了缺失數(shù)據(jù)和異常值,我們驗證了一些基礎(chǔ)統(tǒng)計假設(shè),并且將類別變量轉(zhuǎn)換為虛擬變量。

但問題還沒有結(jié)束,我們還需要預(yù)測房價的變化趨勢,房價預(yù)測是否適合線性回歸正則化的方法?是否適合組合方法?或者一些其他的方法?這篇文章解決了數(shù)據(jù)預(yù)處理的問題,預(yù)處理后,我們選擇正確的模型算法進(jìn)行擬合。

參考文章:
詳解Kaggle房價預(yù)測競賽優(yōu)勝方案

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容