日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

【机器学习入门】(12) 特征工程:特征选择、数据降维、PCA

發(fā)布時間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器学习入门】(12) 特征工程:特征选择、数据降维、PCA 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

各位同學(xué)好,今天我和大家分享一下python機器學(xué)習(xí)中的特征選擇和數(shù)據(jù)降維。內(nèi)容有:

(1)過濾選擇;(2)數(shù)據(jù)降維PCA;(3)sklearn實現(xiàn)

那我們開始吧。


一個數(shù)據(jù)集中可能會有以下問題:

(1)冗余部分特征的相關(guān)度高,由于A與B之間有某種計算公式使它們相關(guān)聯(lián),A特征的變化會導(dǎo)致B特征的變化,容易消耗計算性能,只需要存在一個特征就可以了。

(2)噪聲部分特征對預(yù)測結(jié)果有負(fù)影響,需要剔除一些與預(yù)測對象不相關(guān)的特征

理解特征選擇: 現(xiàn)在有一個數(shù)據(jù)集,這個數(shù)據(jù)集中有100個特征,我們只需要其中的幾十項,這時我們需要對這個數(shù)據(jù)集進(jìn)行選擇。

理解數(shù)據(jù)降維:?現(xiàn)在有一個數(shù)據(jù)集,數(shù)據(jù)集中有100列特征,也叫做有100個維度,通過降維將數(shù)據(jù)將到幾十維。降維時,一般會改變原維度所代表的意義。例如,現(xiàn)在有A、B兩個維度,給它降到一維,稱之為C,而C維度代表的意義是同時代表A、B維度的新維度。


1. 特征選擇

特征選擇是單純地從提取到的所有特征中選擇部分特征作為訓(xùn)練集特征,特征在選擇前和選擇后可以改變值,也可以不改變值。但是選擇后的特征維數(shù)肯定比選擇前小,畢竟我們只選擇了其中的一部分特征。

特征選擇分為三種方式:

(1)Filter(過濾式): 根據(jù)方差、閾值選擇

(2)Embedded(嵌入式): 正則化、決策樹

(3)Wrapper(包裹式): 不常用

2.?過濾選擇

過濾式的特征選擇是根據(jù)方差選擇,它會刪除所有低方差的特征默認(rèn)會刪除所有方差為0的數(shù)據(jù)。可以使用sklearn中的 VarianceThreshold(threshold=0)?方差、閾值來實現(xiàn)過濾。若該列的方差小于我指定的閾值,就會刪除該特征列

方差的大小可以體現(xiàn)數(shù)據(jù)的離散程度。方差越小,說明數(shù)據(jù)越集中,這個數(shù)據(jù)對整個結(jié)果的影響并不大,所以優(yōu)先刪除方差等于0或接近0的特征。

比如,當(dāng)方差等于0時,表示該特征列上所有的值都是一樣的,一列數(shù)據(jù)都是一樣的對預(yù)測結(jié)果毫無關(guān)系,這時就可以把這一列刪除。如果方差較大,該特征列的離散程度也比較大,對結(jié)果會有比較大的影響。

在sklearn中實現(xiàn),導(dǎo)入方法: from sklearn.feature_selection import VarianceThreshold

方差、閾值過濾方法:?VarianceThreshold()

參數(shù)設(shè)置: threshold 閾值默認(rèn)等于0;方差小于該閾值時刪除該特征列。

# 特征選擇
# 自定義數(shù)據(jù),第0列和3列的值都是一樣的
data = [[0,2,0,3],[0,1,4,3],[0,1,1,3]]
# 導(dǎo)入標(biāo)準(zhǔn)化方法,查看每一列的方差
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit_transform(data)
# 查看方差
values = scaler.var_# 導(dǎo)入過濾選擇方法
from sklearn.feature_selection import VarianceThreshold
# 接收過濾選擇方法
var = VarianceThreshold()
# 將數(shù)據(jù)傳入方差、閾值過濾方法,將方差為0的特征刪除
result = var.fit_transform(data)

首先使用標(biāo)準(zhǔn)化方法查看每一項特征值的方差?scaler.var_?便于對數(shù)據(jù)的每個特征值的方差有了解,再使用過濾選擇方法,默認(rèn)刪除方差為0的特征列。


3.?PCA(主成分分析)

3.1 方法介紹

主成分分析是一種統(tǒng)計方法,是數(shù)據(jù)降維中的一種,通過正交變換將一組可能存在相關(guān)性的變量轉(zhuǎn)換為一組線形不相關(guān)的變量,轉(zhuǎn)換后的這組變量叫主成分

在用主成分分析方法研究多變量問題時,變量個數(shù)太多會增加課題的復(fù)雜性。人們希望變量的個數(shù)減少而得到的信息較多。在很多情形下,變量之間有一定的相關(guān)關(guān)系。當(dāng)兩個變量之間有一定的相關(guān)關(guān)系時,可以解釋為,這兩個變量反映此課題的信息有一定的重疊

主成分分析是對原先提出的所有變量,將重復(fù)的變量(關(guān)系緊密的變量刪去多余),建立盡可能少的新變量,使得這些新變量是兩兩不相關(guān)的,而且這些新變量在反映課題的信息反面盡可能保持原有的信息


3.2 主成分分析求解步驟

(1)獲取方差最大的正交變換

上圖中藍(lán)色坐標(biāo)軸是原來數(shù)據(jù)的坐標(biāo)軸,坐標(biāo)上有一個點(2,2);經(jīng)過變換后得到紅色坐標(biāo)軸,這個點的位置沒有發(fā)生改變,但是點的坐標(biāo)變化了;這樣就可以將我們的數(shù)據(jù)變成另外一個值了。

但是這個正交變化該怎么變?我們是通過方差來決定的,也就是正交變換完后,哪個方差最大,那么就選哪個。方差越大,代表數(shù)據(jù)越不集中,對結(jié)果的影響也越大。變換公式如下:

pi 代表正交變換參數(shù)ai代表每一條數(shù)據(jù)的特征,如果求完后的結(jié)果的方差是最大的,那么就選擇該組正交變化參數(shù)p


3.3 生成更多主成分

以上是生成一個主成分(新特征)的步驟。一般我們會生成多個主成分,必須遵循一個條件,也就是多個主成分之間不能存在線形相關(guān),即特征之間不能通過某種公式來互相轉(zhuǎn)換。用數(shù)學(xué)公式來表示則為協(xié)方差

(1)降維后的特征之間的協(xié)方差為0,表示各個特征關(guān)系是獨立的,每個特征都不會隨著其他特征變化而有規(guī)律的變化。

(2)如果兩個特征之間相關(guān)聯(lián),那么這個兩個的協(xié)方差較大。新生成一個主成分需要和原來的主成分求一下協(xié)方差,如果為0,證明可行。

(3)新生成的主成分的每個特征的方差應(yīng)該盡可能大


3.4 sklearn 實現(xiàn) PCA

導(dǎo)入方法:?from sklearn.decomposition import PCA

降維方法:?PCA()? 參數(shù)設(shè)置

n_components

(1)0-1之間,維度的比例再減1。例:若原數(shù)組有4個特征列,指定n_components=0.9,代表原來有4維,現(xiàn)在變成4*0.9=3.6,取整數(shù)部分,現(xiàn)在有3維,再減1維。最終降到2維。

(2)整型數(shù)據(jù)。具體維度,不能指定超過當(dāng)前 min{行數(shù),列數(shù)}?的維度。

# PCA
# 自定義數(shù)據(jù)
data = [[4,2,76,9],[1,192,1,56],[34,5,20,90]]
# 導(dǎo)入方法
from sklearn.decomposition import PCA
# 構(gòu)建PCA對象,默認(rèn)降低一個維度
pca = PCA(n_components=0.9)
# 數(shù)據(jù)傳入PCA方法
result = pca.fit_transform(data)

總結(jié)

以上是生活随笔為你收集整理的【机器学习入门】(12) 特征工程:特征选择、数据降维、PCA的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。