1. 程式人生 > >資料分析處理回顧

資料分析處理回顧

1:直接通過dict將DataFrame格式的資料轉化成dict之後

通過type(dict['key'] ) 型別依然是Series;

如果想要用到list,還需巢狀一層list()

2:pca降維演算法:

可以直接使用skleran下面的
包的匯入是:

from skleran.decompostion import PCA

一般生命一個PCA就PCA(n_components=x)就可以了

然後通過呼叫fit方法就可以了

例子:https://blog.csdn.net/weixin_38859557/article/details/84950654

3:python 的幾個生成式:

https://blog.csdn.net/weixin_38859557/article/details/84951225

4:關於python幾種資料型別的合併:

https://blog.csdn.net/weixin_38859557/article/details/84951471

5:關於AI中的類比型變數:

把類別型的變數分開進行預測是沒有用的,因為演算法內部本身就是分開處理的,計算值的時候還是使用的數值特徵計算的值;

6:python 建立資料夾

os.mkdir(filepath+filename)

7:業務相關的處理:

1:對整體資料的大致瞭解

2:利用儲存資料的多少作為閾值,

3:異常值檢測

包括,盒圖,iforest,分位點,正態分佈的3σ原則

4:get_dummies(one_hot編碼)

5:label encode(這個需要注意測試資料和預測資料編碼需要統一,最好的方式是測試資料和預測資料合併之後在編碼,然後分開;

6:然後是分開類別進行預測

https://blog.csdn.net/weixin_38859557/article/details/84957679

8:些許感悟:

在資料處理當中,要時刻於業務邏輯相結合,(但這不是絕對的,如果資料質量不高那麼可能出現的問題就是於實際業務邏輯相違背的,比如房價這個label,一般在其他條件相同的情況下,房屋面積增加,房價肯定是增加的,但是由於各種原因,可能會出現於實際生活相違背的東西,)所以資料探勘過程需要結合實際生活(也就是業務邏輯),這樣能夠或多或少的減少一些挖掘的步驟;但是這個或許也是檢測資料質量是否高的一個依據;實際結合業務邏輯可以檢測出一些異常值;

必須要留意資料的格式,是連續型的還是離散型的,對於離散性的資料,如果根據他的類別進行分模型有時候沒有必要,因為一些演算法的內部也是根據這個來分的,但是如果出現這樣一種情況:比如兩種類別出現的特徵個數不同,那麼這個時候可能需要考慮分模型的情況了,因為再進行一起預測,可能資料並不是很好處理,如房屋的售賣和出租,對於出租來說,可能就有出租時間,但是對於售賣來說就沒有,如果這兩個類別不分開進行預測,對於售賣來說可能就需要將出租時間記為0,但是這個並不能從實際生活上去解釋這個欄位,所以有時候將整個資料集分模型進行預測是有必要的;還有就是對於離散型的特徵,如果其他特徵不變的情況下,分類別模型預測合併之後最終結果和沒有分開的結果一樣,至少在xgboost的迴歸任務裡面是這樣的,可能對於深度神經網路可能有不同;(目前還沒實際進行過測試,因為樹的演算法和神經網路的矩陣運算演算法不一樣)類別型的資料本身是沒有大小差距的,所以轉化成one_hot編碼是最好的結果,但是如果類別過多的化,轉化之後維度過高消耗的計算資源太大,

這裡需要一個平衡;

對於數值型的資料的處理就更為的複雜,考慮到分佈情況,對於迴歸預測,如果標籤貼合正太分佈,對預測效果會更好,所以這裡就涉及到了log變換,box-cox變換,偏度和峰值的處理,(還有一種方法忘記了是把label轉化成一條直線,線越值越好)但是他也是通過log等一下變化來達到的;

還有就是異常值的檢測和處理:

異常值檢測最難的就是確定一個閾值,這個需要不斷的測試,但是也可以用一些聚類和無監督的演算法;如iforest等,但是還是需要涉及一些引數的除錯;

下面是關於一些演算法和框架的使用:

1:tensorflow

最先使用的就是tensorflow的框架,沒有使用高階的api,自己構建的dnn網路,

2:使用了tensorflow中的一些高階用法,如feature_column 和wide and deep model

3:cNN

4:RNN

5:xgboost

6:keras 框架

7:auto_ml

8:sklearn

其中最好用的就是auto_ml了,但是好用是好用,但是精度就不是特別高了,肯定沒有結合業務測試出來的引數好,框架都是設定一些適合大眾用的引數,所以框架越高階可能越好用,但是可能精度就有問題;

但是auto_ml 結合xgboost演算法在資料探勘過程中時間效率上很高,如果使用tensorflow則在計算的消耗上就會很長;