特徵工程(3)特徵增強:數據清洗——缺失值識別

代碼及數據集

鏈接:https://pan.baidu.com/s/1tEz3gkTfmZjD-0JaC-nhVQ 密碼:l16a
數據清洗知識脈絡
缺失值處理
歸一化

缺失值識別

數據集說明

  • 數據集:皮馬印第安人糖尿病預測數據集
  • 數據來源:https://www.kaggle.com/uciml/pima-indians-diabetes-database
    • 數據9列,768行
    • 該數據希望通過體檢結果細節,預測21歲以上的女性5年內會否會換上糖尿病

數據含義

  • 懷孕次數
  • 口服葡萄糖耐量試驗中的2小時血漿葡萄糖濃度
  • 舒張壓(mmHg)
  • 三頭肌皮褶厚度(mm)
  • 體重指數[BMI]
  • 2小時血清胰島素濃度(uU/ml)
  • 糖尿病家族函數
  • 年齡
  • 類變量(0/1,代表是否患有糖尿病)

在這裏插入圖片描述

進行探索性數據分析(EDA)來識別缺失值

pima = pd.read_csv('data/pima.data')
pima.head()

在這裏插入圖片描述

  • 由於數據集沒有列名所以通過數據集說明手動將其加上
pima_colunmn_names = ['Pregnanci', 'Glucose', 'BloodPressure', 'SkinTickness', 'Insulin', 
                      'BMI', 'DiabetesPedigreeFunction', 'Age', 'Outcome']
pima = pd.read_csv('data/pima.data', names=pima_colunmn_names)
pima.head()

在這裏插入圖片描述

計算空準確率

  • 空準確率:使用樣本比例最多的類別進行預測時的準確率。
pima['Outcome'].value_counts(normalize=True)

在這裏插入圖片描述

  • 可以看出當前空準確率爲65%左右

用列名做一個基本的統計、選擇和可視化操作

  • 對糖尿病人和健康人區別進行可視化
  • 希望直方圖可以顯示出一些規律
  • 或者這兩類之間的顯著差異
for col in ['BMI', 'BloodPressure', 'Glucose']:
    plt.hist(pima[pima['Outcome']==0][col], 10, alpha=0.5, label='non-diabetes')
    plt.hist(pima[pima['Outcome']==1][col], 10, alpha=0.5, label='diabetes')
    plt.legend(loc='uper right')
    plt.xlabel(col)
    plt.ylabel('Frequency')
    plt.title('Histogram of {}'.format(col))
    plt.show()

在這裏插入圖片描述

  • 通過這幾張圖可以看出患者與正常人的體徵有着顯著的不同
  • 例如血漿葡萄糖濃度會有很大的增長
  • 血壓和BMI也比正常人低

使用線性相關矩陣來量化變量間的關係

# 數據集相關矩陣的熱力圖
plt.figure(figsize=(16,8))
sns.heatmap(pima.corr(), annot=True, cmap= 'PuBuGn')
plt.title('Variable relationship')
plt.show()

在這裏插入圖片描述
在這裏插入圖片描述

  • 可以看出Glucose和Outcome是一個強相關的關係
EDA分析提示Glucose是預測糖尿病的重要變量

查看缺失值

在這裏插入圖片描述

  • 目前來看並沒有缺失值
  • 在通過describe查看下
    在這裏插入圖片描述ext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NhbXBiZWxsMDAx,size_16,color_FFFFFF,t_70)
    在這裏插入圖片描述
    要儘可能的瞭解數據集,以便找到其他符號填充的缺失數據
    務必閱讀數據及說明文檔,裏面可能會提到缺失數據問題

缺失值的常見填充方法

  • 0(數值型
  • unknown或者Unknown(類別型)
  • ?(類別型)

清洗數據將0替換成None

columns = ['Glucose','BloodPressure','SkinTickness','Insulin','BMI']

for col in columns:
    pima[col].replace([0], [None], inplace=True)

在這裏插入圖片描述

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