以house price為例
1.train_df.head(n)
通過檢視**頭部幾行元素來觀察資料的大致組成。
price即資料的
label
本身不是平滑的,通常為了分類器學習的準確性,會首先把
label
「平滑化」,即呈現正態分佈。在這裡通常使用
log1p
,即log(x+1)
,避免了負值的問題。
最後也要把**的平滑資料給變回去,需要使用expm1()
3.合併操作:
all_df = pd.concat((train_df,test_df), axis = 0 )
4.在house price prediction中
mssubclass
的值其實應該是
category
,使用df
的時候,這類數字符號會被預設記成數字。因此我們需要把它變回
string
。input >> all_df[『mssubclass』].dtypes
output >> dtype(『int64』)
因此進行操作:
all_df[『mssubclass』] = all_df[『mssubclass』].astype(str)
5.把category的變數轉換成
numerical
表達形式
當我們用numerical來表達category 時要注意,數字本身有大小的含義,所以使用數字會給以後的模型學習帶來困難,於是我們可以用
one-hot
向量表示
category
。一鍵one-hot的方法:
all_dummy_df = pd.get_dummies(all_df))
6.缺失值的處理:
(1)檢視有哪些特徵有缺失值
all_dummy_df.isnull().sum().sort_values(ascending=false).head(10)
處理這些缺失的資訊,一般來說,資料集的描述裡會寫的很清楚,這些缺失都代表著什麼。否則我們根據自己的選擇來填充缺失值
(2)在這裡,我們用平均值來填滿這些空缺。
mean_cols = all_dummy_df.mean()
all_dummy_df = all_dummy_df.fillna(mean_cols)
7.標準化numerical資料
這一步並不是必要,但要看你想用的分類器是什麼。一般來說regression的分類器最好把源資料放在乙個標準分布內,不要讓資料間的差距過大。
這裡,不需要把one-hot的資料標準化,應該把本來就是
numerical
的資料標準化。
首先,判斷哪些時numerical的資料:
numeric = all_df.columns[all_df.types != 『object』]
然後計算標準分布:(x-x』)/s,讓我們的資料點更加平滑,便於計算。
注意這裡可以繼續使用loc的。
numeric_col_means = all_dummy_df.loc[:,numeric_cols].mean()
numeric_col_std = all_dummy_df.loc[:,numeric_cols].std()
all_dummy_df.loc[:,numeric_cols] = (all_dummy_df.loc[:, numeric_cols] - numeric_col_means)
/ numeric_col_std
PART 2 2 風控建模前資料預處理 清洗
最重要的事情開始都會講 建模是始終服務於業務的,沒有業務的評分卡就沒有靈魂 廣義資料預處理包括 資料清洗,資料整合 使用者基礎資料,外部第三方資料,埋點資料 資料變換 woe 型別 4 時間格式 5 中文資料 若干函式用法 1 重複值 duplicated函式用來查詢並顯示資料表中的重複值 dupl...
資料預處理方法總結
資料是什麼?資料就是一組物件及其屬性的集合,其中屬性定義為物件的特徵或性質。真實資料在應用前基本都有經過預處理,以便在機器學習演算法中使用。本次資料預處理方法的總結是基於推薦系統設計進行展開的,其中包括相似度的度量方法 抽樣以及降維技術這三個尤為重要的問題。d x y k 1 n xk yk 2 x...
資料預處理方法總結
資料是機器學習的原料,機器學習是通過對資料的訓練才得到某種特性的。因此正確的預處理資料對模型結果的輸出尤為重要。一 資料可能存在的問題 資料一開始可能有資料重複,資料缺失,資料存在異常值等情況。二 資料預處理的步驟 資料處理主要包括資料的清洗,資料的轉化.資料描述,特徵選擇和特徵抽取這幾個步驟。1 ...