缺失值的處理
由於各種原因,許多現實世界的資料集包含缺少的值,通常編碼為空白,nan或其他佔位符。然而,這樣的資料集與scikit-learn的分類器不相容,它們假設陣列中的所有值都是數字,並且都具有和保持含義。使用不完整資料集的基本策略是丟棄包含缺失值的行或列。然而,這樣的代價是可能丟失有價值的資料,如果每行或每列缺失資料佔比比較大,建議直接放棄這些資料,否則更好的策略是估算缺失值,並將其填充。scikit-learn中填充缺失值的api是imputer類,使用方法如下:
from sklearn.preprocessing import imputerimport numpy as np
#缺失值填補的時候必須得是float型別
# 缺失值要填充為np.nan,它是浮點型,strategy是填充的缺失值型別,這裡填充平均數,axis代表軸,這裡第0軸是列
im = imputer(missing_values='nan',strategy='mean',axis=0)
data = im.fit_transform([[1, 2], [np.nan, 3], [7, 6]])
print(data)
引數strategy有三個值可選:mean(平均值),median(中位數),most_frequent(眾數)輸出結果:
array([[ 1., 2.],[ 4., 3.],
[ 7., 6.]])
可見:之前的缺失值被這一列的平均值((1+7)/2=4)填充了
資料降維
1、資料降維是什麼?
降維不是指的陣列的維度減少,而是特徵的數量減少。
2、為什麼要降維?
當資料集的特徵非常多時,特徵冗餘,要麼是一些無用的特徵,要麼是表達重複資訊的特徵,這些資料會消耗計算效能,正確降維後的資料一般保留了原始資料的大部分重要資訊,完全可以替代原始資料作為輸入,從而提高效能。
3、常用的兩種降維方式:1、特徵選擇; 2、 主成分分析(pca);
1、特徵選擇
特徵選擇是什麼?
特徵選擇就是從所有特徵中選擇一部分特徵作為演算法的輸入資料特徵選擇的三種方法:
過濾式(filter):variancethreshold
嵌入式(embedded):正則化、決策樹
包裹式(warpper)
神經網路
這裡我們先只介紹過濾式的方差過濾,包裹式很少使用,嵌入式和神經網路留到後面具體介紹
scikit-learn中使用方差進行過濾的api是:feature_selection.variancethreshold
from sklearn.feature_selection importvariancethreshold
#返回值:訓練集將刪除方差低於threshold的特徵,threshold預設為0,即刪除方差為0的特徵
var = variancethreshold(threshold=0.0)
#使用fit_transform進行轉化
data = var.fit_transform([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]]) print(data)
輸出結果:
array([[2, 0],[1, 4],
[1, 1]])
上面使用方差過濾後,輸出結果是刪除了方差為0的資料。 過濾式的方法常用的就是方差選擇,因為方差代表了資料的穩定性,方差越小,資料的波動越小,對結果的影響也就越小,方差為0時,說明這一列的特徵值相同,對於結果判斷毫無影響,因此將其刪除,以提高計算效能。
2、主成分分析(pca)
主成分分析是什麼?
顧名思義:主成分分析即對資料集進行簡化,通過線性變換將多個特徵合併為少數互不相關的綜合特徵(即主成分),簡化之後,資料的維度降低,但所包含的資訊量並不減少,能夠最大限度的反映原始資料。
scikit-learn中pca的api是:decomposition.pca
當特徵數量非常多達到上百時,才有必要使用主成分分析,下面只是用四個特徵演示一下用法
from sklearn.decomposition importpca
#n_components:指定要保留的資料資訊為90%,通常保留值在90%-95%之間
pca = pca(n_components=0.9)
data = pca.fit_transform([[2,8,4,5], [6,3,0,8], [5,4,9,1]]) print(data)
pca中的引數n_components可以為整數,也可以為小數; 為小數時代表保留的資訊百分比,比如上面0.9就是保留90%的資訊; 為整數時代表保留的特徵數量,我們通常不會預先知道保留幾個特徵比較合適,所以通常不用整數。
輸出結果:
array([[ -9.33473422e-16, 3.82970843e+00],[ -5.74456265e+00, -1.91485422e+00],
[ 5.74456265e+00, -1.91485422e+00]])
總結:1、scikit-learn中缺失值的處理;
2、資料降維的兩種方式:過濾式特徵選擇、pca(主成分分析);
3、過濾式特徵選擇所得到資料是原始資料的子集,pca得到的資料是經過重新計算的,不是原始資料的子集,但保留了原始資料所代表的資訊。
過濾特徵 特徵工程3 缺失值及資料降維
缺失值的處理 由於各種原因,許多現實世界的資料集包含缺少的值,通常編碼為空白,nan或其他佔位符。然而,這樣的資料集與scikit learn的分類器不相容,它們假設陣列中的所有值都是數字,並且都具有和保持含義。使用不完整資料集的基本策略是丟棄包含缺失值的行或列。然而,這樣的代價是可能丟失有價值的資...
特徵工程(5) 降維
當特徵選擇完成後,可以直接訓練模型了,但是可能由於特徵矩陣過大,導致計算量大,訓練時間長的問題,因此降低特徵矩陣維度也是必不可少的。常見的降維方法除了上篇提到的基於l1懲罰項的模型以外,另外還有主成分分析法 pca 和線性判別分析 lda 線性判別分析本身也是乙個分類模型。pca和lda有很多的相似...
機器學習 特徵工程 資料降維
定義 將原始資料轉換為更好地代表 模型的潛在問題的特徵的過程,從而提高了對未知資料的 準確性。內容 主要有三部分 1 特徵抽取 2 特徵預處理 3 資料的降維 機器學習領域中所謂的降維就是指採用某種對映方法,將原高維空間中的資料點對映到低維度的空間中。降維的本質是學習乙個對映函式 f x y,其中x...