摘要:經過了資料的探索分析,可以大概知道資料的分布情況,從而進行相應的處理。
大體經驗如下:
step1:確定資料類別(數字特徵或者分類特徵)以及資料性質。
#1、定性資料:
#a)定類:按名稱分類----->城市 這個可以用onehot進行編碼
#b)定序:有序分類 ----->成績。 學歷 #這個是有序變數要用order
#2、定量資料:描述數量
#a)定距:可以加減--溫度,日期
#b)定比:可以乘除----**,重量
step2:資料清洗 :
目的:目的在於提高資料質量,降低演算法用錯誤資料建模的風險。
# 1、特徵變換:模型無法處理或者不合適處理
#a) 定性變數編碼:label encode,onehot encode,distribution coding
#b) 分布不均勻的資料:標準化和歸一化,
# 2、缺失值處理:增加不確定性,可能會導致不可靠輸出。
#a)不處理,少量樣本缺失
#b)刪除,大量樣本缺失。
#c)補全:(同類)均值/中位數/眾數補全。或者模型**,或者最鄰近補全,矩陣補全
#3.異常值處理:減少髒資料
#a)簡單統計:如describe()的統計描述。散點圖等等.
#b)箱線圖截斷。一般情況不會超過3倍方差的資料
#c)利用模型進行離群點檢測:比方聚類,k鄰近,
#4,其他:刪除無效列/更改dtypes/刪除列中的字串/將時間字串轉換為日期格式等。
step3:特徵構造
目的:增強資料的表達,新增先驗知識。
#1)統計量特徵:
#a)計數、求和、比例、標準差
#2)時間特徵:
#a)絕對時間、相對時間、節假日、雙休日
#3)地理資訊:
#a)分桶
#4)非線性變換
#a)取log/平方/根號
#5)資料分桶
# 等頻率/等距、卡方分桶
#6特徵組合
step4:特徵選擇
#目的:降低雜訊,平滑**能力和計算複雜度,增加模型的**效能
#1、過濾式:先用特徵選擇方法對初識特徵進行過濾然後再訓練學習,特徵選擇過程和後續學習器無關
#2、包裹式:直接把最終要使用的學習器的效能作為衡量特徵子集的評價準則。目的在於為給定的
#學習器選擇有利於效能的特徵子集
#3、嵌入式
step5:處理資料不平衡
#缺點:s少類別提供資訊太少,沒有學會如何判別少數類
#1、擴充資料集
#2、嘗試其他評價指標
#3、調整w值
#4、重取樣:過取樣/欠取樣
#5、選擇其他模型:決策樹類
#7、加權少類別人樣本錯分代價
#8、創新。a、將大類分解成多個小類,b、將小類視為異常點,並用異常檢查模型
以下簡單貼出構造特徵的**:
結果如下:
對資料就進行合併:
分桶處理**:
對資料進行onehot:
對一些值進行歸一化:
特徵工程 資料處理(2)非結構型資料
詞袋模型 每篇文章看成一袋子詞,並忽略每個詞出現的順序。具體地說,就是將整段文字以詞為單位切分開,然後每篇文章可以表示成乙個長向量,向量中的每一維代表乙個單詞,而該維對應的權重則反映了這個詞在原文章中的重要程度。所以文字的單詞就是文字的特徵,這個特徵的重要性常用tf idf來計算,權重公式為 tf ...
特徵預處理 My way of ML2
數值型資料 1.歸一化 2.標準化 3.處理缺失值 類別型資料 ont hot編碼 所有的對資料處理的api都放在sklearn.preprocessing裡 api sklearn.preprocessing.minmaxscaler feature range 指定縮放範圍 特點 通過原始資料的...
資料清洗及特徵處理
import numpy as np import pandas as pd df pd.read csv train.csv 檢視每個特徵缺失值個數 df.info df.isnull sum df.dropna df.fillna 對age列的資料缺失值進行處理 df df age none 0...