過濾特徵 特徵工程3 缺失值及資料降維

2021-10-14 18:13:02 字數 3122 閱讀 3181

缺失值的處理

由於各種原因,許多現實世界的資料集包含缺少的值,通常編碼為空白,nan或其他佔位符。然而,這樣的資料集與scikit-learn的分類器不相容,它們假設陣列中的所有值都是數字,並且都具有和保持含義。使用不完整資料集的基本策略是丟棄包含缺失值的行或列。然而,這樣的代價是可能丟失有價值的資料,如果每行或每列缺失資料佔比比較大,建議直接放棄這些資料,否則更好的策略是估算缺失值,並將其填充。
scikit-learn中填充缺失值的api是imputer類,使用方法如下:

from sklearn.preprocessing import imputer

import 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 import variancethreshold

# 返回值:訓練集將刪除方差低於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 import pca

# 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的分類器不相容,它們假設陣列中的所有值都是數字,並且都具有和保持含義。使用不完整資料集的基本策略是丟棄包含缺失值的行或列。然而,這樣的代價是可能丟失有價值的資...

特徵工程 缺失值處理

目前常用的三類處理方法 1.用平均值 中值 分位數 眾數 隨機值等替代。效果一般,因為等於人為增加了雜訊。2.先根據歐式距離或pearson相似度,來確定和缺失資料樣本最近的k個樣本,將這k個樣本的相關feature加權平均來估計該樣本的缺失資料。3.將變數對映到高維空間 a.對於離散型變數 男 女...

python 特徵缺失值填充

該部落格總結比較詳細,感謝博主。我們在進行模型訓練時,不可避免的會遇到某些特徵出現空值的情況,下面整理了幾種填充空值的方法 對於特徵值缺失的一種常見的方法就是可以用固定值來填充,例如0,9999,9999,例如下面對灰度分這個特徵缺失值全部填充為 99 data 灰度分 data 灰度分 filln...