gsea结果分析图怎么看_数据分析怎么做?看这篇就够了!
數據分析概述
數據分析完整工作流程
關于數據分析的大體流程這里以圖形的形式展現給大家,就不做過多的講述。
數據探索與相關性分析
這一部分是直接從數據分析工作流程中的數據整理與清洗開始。
數據探索,探索性數據分析(Exploratory Data Analysis),簡稱EDA。傳統的統計方法是先假定數據服從某種分布,然后運用這種模型進行預測,以概率論為基礎,做參數檢驗。而EDA則是強調數據,“拋開”概率的理論,從數據出發,主要手段是匯總統計,可視化。
在進行EDA時,我們可以分為三個階段,分別是:
數據概況分析
單變量分析
多變量分析
用圖形來展示如下:
接下來跟大家簡單的分享一下數據探索性分析的流程,下面的所有過程都會使用到Python的pandas包。
數據概況分析
在數據概況分析階段,我們主要了解數據整體的基本情況,比如數據的離散程度,數據的分布等,以及數據中是否存在異常值/缺失值。這里以二手車價格預測的數據來做個例子。(代碼看不懂沒關系,看結果就好,不妨礙理解)
#version:python3.6.5#package:Pandas#encoding=utf-8import pandas as pd#發現csv是以空格分割的car=pd.read_csv('used_car.csv',sep=' ')#查看數據維度,整體概況print(car.shape,'\n','#'*100)print(car.axes,'\n','#'*100)print(car.info(),'\n','#'*100)>>>結果:(150000, 31) #數據維度,數據有15萬行,31列(屬性)###############################################################################################[RangeIndex(start=0, stop=150000, step=1), Index(['SaleID', 'name', 'regDate', 'model', 'brand', 'bodyType', 'fuelType', 'gearbox', 'power', 'kilometer', 'notRepairedDamage', 'regionCode', 'seller', 'offerType', 'creatDate', 'price', 'v_0', 'v_1', 'v_2', 'v_3', 'v_4', 'v_5', 'v_6', 'v_7', 'v_8', 'v_9', 'v_10', 'v_11', 'v_12', 'v_13', 'v_14'], dtype='object')] #上面查看的是各屬性的名稱 ###############################################################################################<class 'pandas.core.frame.DataFrame'>RangeIndex: 150000 entries, 0 to 149999Data columns (total 31 columns):SaleID 150000 non-null int64name 150000 non-null int64regDate 150000 non-null int64model 149999 non-null float64brand 150000 non-null int64bodyType 145494 non-null float64fuelType 141320 non-null float64gearbox 144019 non-null float64power 150000 non-null int64kilometer 150000 non-null float64notRepairedDamage 150000 non-null objectregionCode 150000 non-null int64seller 150000 non-null int64offerType 150000 non-null int64creatDate 150000 non-null int64price 150000 non-null int64v_0 150000 non-null float64v_1 150000 non-null float64v_2 150000 non-null float64v_3 150000 non-null float64v_4 150000 non-null float64v_5 150000 non-null float64v_6 150000 non-null float64v_7 150000 non-null float64v_8 150000 non-null float64v_9 150000 non-null float64v_10 150000 non-null float64v_11 150000 non-null float64v_12 150000 non-null float64v_13 150000 non-null float64v_14 150000 non-null float64dtypes: float64(20), int64(10), object(1)memory usage: 35.5+ MBNone #上面查看的是各數值型的數據缺失情況和類型 ###############################################################################################查看了數據的整體情況,接下來對數據進行描述性統計分析。
#查看數據整體分布情況np.set_printoptions(suppress=True)#supress:設置不顯示科學記數法|pd.set_option('display.float_format', lambda x: '%.2f' % x) car.describe()#用describe方法對整體數據進行描述統計分析結果如下圖所示。
count:該屬性下數據的總數;
mean:平均數;
std:標準差,數據的偏離均值程度;
min~max:中間是四分位數,用于判斷樣本數據的分布情況和離群值等;
注:上面的描述統計針對的是數值型的變量,不包含類別型變量。
對于類別型的屬性,首先查看一下這個屬性有什么類別,如果類別數量不多的話,后面可以考慮將它轉變為啞變量方便分析和建模。
類別型的統計描述與數值型的數據不一樣,具體如下圖所示。
類別型數據描述統計的參數含義是:
unique: 唯一值數
top: 頻數最高者
freq: 最高頻數
單變量分析
連續型數值變量分析
這里我們拿二手車數據的price字段來舉個例子,見下圖。
無論是單變量分析還是多變量分析階段,都需要做大量的圖對變量進行分析,因為通過圖形的展示能夠更加的直觀看到問題所在。除了上面的直方圖,我們還可以采用箱線圖等對數據進行可視化分析。
通過可視化分析后,如果數據存在離群值,我們可以看看它在數據中的占比,再酌情刪除,避免其對后續的模型構建造成影響。
如果變量數據存在缺失值,我們會看看缺失值占比,如果占比不高,我們可以通過填充均值的方式(適用于數值型(連續型)變量)來對缺失值進行填充。
離散型變量分析
對于離散型變量,我們可以用value_counts()函數來統計各類別數量和占總數比,也可以用直方圖來進行可視化分析,如下圖所示,X軸即為離散型變量的值。
如果離散型數據的類別過多,我們可以用先驗知識查看各類別型數據,找到其區分點,對其進行一個特征衍生。
舉個例子,如下,是郵箱屬性下的類別數值。
df.xx.value_counts()>>>結果:郵箱 總數gmail.com 61738hotmail.com 25657anonymous.com 19115yahoo.com 9563aol.com 3538outlook.com 2504comcast.net 1701icloud.com 1422yahoo.com.mx 1235msn.com 846live.com.mx 710live.com 682sbcglobal.net 611verizon.net 582me.com 539att.net 440outlook.es 420cox.net 395hotmail.fr 374bellsouth.net 373hotmail.es 303web.de 277mail.com 219mac.com 212hotmail.co.uk 212ymail.com 198yahoo.fr 178optonline.net 163gmx.de 150charter.net 136gmail 101prodigy.net.mx 96earthlink.net 91hotmail.de 88embarqmail.com 72yahoo.co.jp 71yahoo.es 67yahoo.de 64juno.com 58frontier.com 58rocketmail.com 57windstream.net 57live.fr 50roadrunner.com 48servicios-ta.com 45假設通過先驗知識,我們得知到某個郵箱類別是匿名的,那么我們就可以將這個郵箱屬性里的類別分為兩類,一類是無匿名的,一類是匿名的,經過處理后,便衍生出了一個新的特征——郵箱是否匿名,同時也方便了對值多的離散型變量的處理。
相關性分析
一般來說,相關性分析是我們建模前的最后一個步驟。為什么要相關性分析呢?
當特征(屬性)間的相關性達到0.99甚至1這種程度時,需要對特征(屬性)進行刪除處理。當特征(屬性)相關性高時,模型會偏向采樣這些高相關的特征,導致最后模型會依賴這些相關性高的特征,最終結果就是降低模型的泛化性能。
通過刪除高相關性的數據,一方面可以節約內存,另一方面可以提高算法模型的泛化能力。
關于計算相關性的一個問題
最好使用全量數據進行相關性計算。
Pandas的corr函數(采用的是皮爾遜相關系數)計算相關性存在一個問題,就是如果兩個特征存在較多的缺失值,那么計算出來的結果的偏差是很大的。舉個例子:
#相關性計算dataframe.feature1=[2,4,5,np.nan,np.nan]dataframe.feature2=[np.nan,np.nan,5,6]df=dataframe[['feature1','feature2']]print(df.corr())>>>1相關系數只會計算二者都不缺失的位置,對于上面的相關性計算來說,也就是5,那么算出來的結果是1。
顯然這是錯誤的,所以我們要先進行缺失值的搜索,把缺失值恰好完全相同的特征放在一起,這樣后續我們進行相關性的計算才是合理的
類別型數據的相關性無法使用皮爾遜相關系數去計算,需要使用一些特殊的指標去衡量。
相關性分析的可視化例子如下,采用的是熱力圖。
關于相關性高特征刪除的一個問題
當兩個特征,假設C1和C2兩個特征相關性達到0.97,那么此時該刪除哪個特征呢?
看C1和C2完全不相同的取值有多少個。
cols=['C1','C2']for col in cols: print(dataframe[col].unique().shape[0]) >>> C1:1495 C2:1167這里選擇刪除C4,對于數來說,取值不同的越多,相對來說可能分裂的地方也就越多,也就意味著這個特征包含的信息量越多。
當然也可以看特征的IV值,但是較為麻煩,計算耗費時間,還不如用上面的方法,更加方便快速。
建模
一般情況下,在經過探索性數據分析和相關性分析后,我們就可以利用數據進行建模分析了。在建模分析或者說數據分析開始前,我們第一個需要明確的,就是我們為什么要進行數據分析,我們數據分析的目的是什么?
拿二手車價格預測舉個例子,我們對二手車的數據進行分析,目的就是為了預測某種類型的二手車它大概能賣多少錢?這就是我們建模中的因變量——價格。而二手車的型號、品牌、使用年限等數據就是自變量。
對于建模來說,我們不需要一股腦的把所有的自變量都加入模型當中,并不是喂給模型的自變量越多出來的模型就越壯,它可能會被“撐死”,即表現為訓練出來的模型效果不好,跟瞎猜沒兩樣。
我們自變量的投喂是要依據前面的相關性的分析,去除高度一致(相關性高)的自變量中的一個,選取與因變量的相關性高的自變量,來進行建模。
而對于建立的模型的選擇,根據你的目的,如果你是對一連串數值的預測,你可以選擇線性回歸模型,也可以選擇CART算法的回歸樹模型。
如果你是想預測分類數據,且是二分類的問題,比如預測用戶是否購買,則采用二元邏輯回歸模型,當然,也可以采用使用CART算法的分類樹模型。
如果你是想建模解決多分類問題,則也可以采取建立多個決策樹模型來解決當然也可以采用多元邏輯回歸模型。
如果你是想解決空間數據的分類問題,那么SVM算法模型是個不錯的選擇。
模型評估
輸出為連續型數值的模型評估
建立好模型后,我怎么知道模型的優劣呢?這個時候就需要對建立好的模型進行一個評估,相應的,python的sklearn庫中就有相應的評分函數,我們可以調用來計算。
對于模型輸出的結果是連續的數值類的模型,我們通常采用二乘偏差均值和絕對值差均值來衡量模型的效果。通過將數據切割為訓練集和測試集,測試集的數據拿來進行測試,訓練集的數據拿來進行訓練模型。
訓練集數據訓練出來模型后,將測試集的數據投喂給模型,最后得出模型預測的測試集的因變量的數值,我們用Vt表示,而測試集原來的因變量用Vd表示
則絕對值偏差均值為:
則二乘偏差均值為:
模型優化的目標就是使得絕對值偏差(LAD)均值,或者二乘偏差(LSD)均值最小。
對于無劃分測試集的輸出為連續型的模型評估
這里可以采用K折交叉驗證的方法,詳情可以自行百度,這里不多解釋。
輸出結果為離散型數值的模型評估
這里的模型指的就是分類問題的模型,這類模型一般輸出結果固定為0(是)或1(否),可以通過劃分訓練集,測試集的方法直接比對結果就可。
模型優化
對于評估效果不好的模型,一般我們會調整模型的自變量,帶入不同的特征(自變量),看看哪個自變量組合對模型輸出的結果的準確率最高,就拿哪個自變量組合作為建模變量。
此外,還可以調整模型的迭代次數或通過數據進行一些變換處理,使得模型得到優化。
這里拿二手車價格預測的模型優化前后的可視化展示來做個例子。
這是一開始的模型結果可視化圖。
紅色的線條是測試集因變量的數據,藍色的線條是模型預測的測試集的因變量數據,可以看到兩種顏色的線條差異較大,說明模型效果并不好。
通過對數據進行一些變換處理后的模型結果可視化如下:
可以看見,經過處理后,模型的性能得到了很大的優化。
模型的優化方法還有很多,我這里就不一一列舉了,今天分享的內容就到這里,希望能對大家有所幫助。
碼字不易,希望大家能點個在看,順帶幫忙點個贊,謝謝大家~
END
掃碼關注我吧!
?搜索"EVERWEEKUP"關注我的個人網站~
?往期文章?
Webscraper讓你不用編程也能爬蟲!
科學吃瓜,你造嗎?
個人公眾號簡介
總結
以上是生活随笔為你收集整理的gsea结果分析图怎么看_数据分析怎么做?看这篇就够了!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初中数学分几个模块_【初中数学】8大模块
- 下一篇: 俄罗俄罗斯与印度发展粮食生产共同有利的条