task3特徵工程+task2EDA分析補充

由於task2打卡失誤,僅包含賽題理解,所以在task3中做一個補充~~

task2補充

EDA中使用到的基本方法:

data.shape()查看數據行列總數

data.head().append(data.tail())查看首尾五行

data.describe()查看均值,標準差,數據分佈等

data.info()數據信息

data.isnull().sum()查看數據爲空總數

missingno繪製缺失數據分佈圖

seaborn包中sns.distplot繪圖

.skew()和.kurt()查看偏度和峯值

.format(features,data[features].nunique())格式化輸出不同的特徵值

data.corr()查看數據相關係數

sns.heatmap()繪製數據熱力圖

sns.FacetGrid畫出輪廓,然後用map填充內容

sns.pairplot()特徵之間的相互關係可視化

以下爲多變量間的關係可視化

fig, ((ax1, ax2), (ax3, ax4), (ax5, ax6), (ax7, ax8), (ax9, ax10)) = plt.subplots(nrows=5, ncols=2, figsize=(24, 20))

task3-特徵工程

常見特徵工程處理方法:

1.異常處理

使用箱線圖去除異常值

  • 箱子的中間一條線,是數據的中位數,代表了樣本數據的平均水平。
  • 箱子的上下限,分別是數據的上四分位數和下四分位數。這意味着箱子包含了50%的數據。因此,箱子的寬度在一定程度上反映了數據的波動程度。
  • 在箱子的上方和下方,又各有一條線。有時候代表着最大最小值,有時候會有一些點“冒出去”。便是此處需要去除的“異常值”。
def box_plot_outliers(data_ser, box_scale):
        """
        利用箱線圖去除異常值
        :param data_ser: 接收 pandas.Series 數據格式
        :param box_scale: 箱線圖尺度,
        :return:
        """
        iqr = box_scale * (data_ser.quantile(0.75) - data_ser.quantile(0.25))
        val_low = data_ser.quantile(0.25) - iqr
        val_up = data_ser.quantile(0.75) + iqr
        rule_low = (data_ser < val_low)
        rule_up = (data_ser > val_up)
        return (rule_low, rule_up), (val_low, val_up)

上爲找出異常值函數

 

 

2.特徵歸一化/標準化

 先做log對數化處理

from sklearn import preprocessing
min_max_scaler = preprocessing.MinMaxScaler()
data['power'] = np.log(data['power'] + 1) 
data['power'] = ((data['power'] - np.min(data['power'])) / (np.max(data['power']) - np.min(data['power'])))
data['power'].plot.hist()

 再進行歸一化處理

data['kilometer'] = ((data['kilometer'] - np.min(data['kilometer'])) / 
                        (np.max(data['kilometer']) - np.min(data['kilometer'])))
data['kilometer'].plot.hist()

 

3.數據分桶

4.缺失值處理

5.特徵構造

6.特徵篩選

1)過濾式

繪製熱力圖觀察特徵相關性

7.降維

 

未完待續...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章