Python機器學習四步走之四 特徵選擇

2021-10-05 18:26:58 字數 3181 閱讀 4876

資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已。
本節示例使用資料集:pima indian資料集

我們先導入資料,並將特徵與目標劃分為x,y:

import pandas as pd

import numpy as np

filename=

'pima_data.csv'

dataset=pd.read_csv(filename)

#將資料分為輸入和輸出資料

array=dataset.values

x=array[:,

:8]y=array[:,

8]

如果資料中包含無關的特徵屬性,會降低演算法的準確度,對**新資料造成干擾,尤其是線性相關演算法(如線性回歸演算法和邏輯回歸演算法)。特徵選擇的目的是最大限度地從原始資料中提取合適的特徵,以供演算法和模型使用。

在開始建立模型之前,執行特徵選擇有助於:

統計分析可以用來分析選擇對結果影響最大的資料特徵,常見方法包括相關係數法、卡方檢驗法、互資訊法。

經典的卡方檢驗是檢驗定性自變數對定性因變數的相關性的方法。卡方檢驗就是統計樣本的實際觀測值與理論推斷值之間的偏離程度,偏離程度決定了卡方值的大小,卡方值越大,越不符合;卡方值越小,偏差越小,越趨於符合;若兩個值完全相等,卡方值就為 0,表明理論值完全符合。

在 scikit-learn 中提供了selectkbest函式,通過設定selectkbest的score_func引數,可以使用一系列統計方法來選定資料特徵。下面的例子是通過卡方檢驗(chi-squared)的方式來選擇四個對結果影響最大的資料特徵。

#單變數特徵選定

#通過卡方檢驗選定資料特徵

from sklearn.feature_selection import selectkbest

from sklearn.feature_selection import chi2

#特徵選定

test=selectkbest(score_func=chi2,k=4)

#修改score_func引數,還通過相關係數、互資訊法等統計方法來選定資料特徵

fit=test.fit(x,y)

print

(fit.scores_)

#卡方檢驗對每乙個資料特徵的評分

features=fit.transform(x)

print

(features)

#得分最高的四個資料特徵

遞迴特徵消除(rfe,recursive feature elimination)使用乙個基模型來進行多輪訓練,每輪訓練後消除若干權值係數的特徵,再基於新的特徵集進行下一輪訓練。通過每乙個基模型的精度,找到對最終的**結果影響最大的資料特徵。

下面的例子是以邏輯回歸演算法為基模型,通過遞迴特徵消除來選定對**結果影響最大的三個資料特徵。

#遞迴特徵消除rfe

from sklearn.feature_selection import rfe

from sklearn.linear_model import logisticregression

model=logisticregression(

)rfe=rfe(model,3)

fit=rfe.fit(x,y)

print

(fit.n_features_)

#特徵個數

print

(fit.support_)

#被選定的特徵

print

(fit.ranking_)

#特徵排名

執行後,我們可以看到rfe選定了preg、mass和pedi三個資料特徵,它們在support_中被標記為true,在ranking_中被標記為1。

主要成分分析(pca,principal components analysis)是使用線性代數來轉換壓縮資料,通常被稱作資料降維。

常見的降維方法還有線性判別分析(lda),它本身也是乙個分類模型。

pca 與 lda 有很多的相似之處,其本質是將原始的樣本對映到維度更低的樣本空間中,但是pca和lda的對映目標不一樣:pca是為了讓對映後的樣本具有最大的發散性;而lda 是為了讓對映後的樣本有最好的分類效能。所以說,pca 是一種無監督的降維方法,而lda是一種有監督的降維方法。在聚類演算法中,通常會利用pca對資料進行降維處理,以利於對資料的簡化分析和視覺化。

#主成分分析pca

from sklearn.decomposition import pca

pca=pca(n_components=3)

fit=pca.fit(x)

#pca是無監督學習,不需要傳入target

print

(fit.components_)

print

(fit.explained_variance_ratio_)

#解釋方差

袋裝決策樹演算法(bagged decision tress)、隨機森林演算法和極端隨機樹演算法都可以用來計算資料特徵的重要性。這三個演算法都是整合演算法中的袋裝演算法,在後續的整合演算法部分會有詳細的介紹。

下面給出乙個使用extratreesclassifier類進行特徵的重要性計算的例子。

#特徵重要性

#通過決策樹計算特徵的重要性

from sklearn.ensemble import extratreesclassifier

model= extratreesclassifier(

)fit= model.fit(x,y)

print

(fit.feature_importances_)

執行後,我們可以看見演算法給出了每乙個資料特徵的得分。

[1] 1480. 帶你了解sklearn中特徵工程的幾個使用方法[eb/ol].雲+社群, 2019-09-17

[2] 魏貞原. 機器學習:python實踐[m]. 電子工業出版社, 2018-01.

災難恢復四步走

如果企業沒有提前準備,不知道到底應當如何恰當地響應災難,勢必會造成巨大損失。所以應採取措 施改善現有計畫來保證業務在災難發生時能夠連續執行。業務影響分析 企業需要明白要保護並備份哪些型別的裝置 應用程式 資料等,理解有哪些系統對企業最為生死攸關,還要知道在it系統不可用時主要業務會發生哪些問題,還要...

Python學習之第四步

一 序列與列表與元組的關係和建立 序列,指的是一種包含多項資料的資料結構,序列包含多個資料項 也叫成員 按順序排列,可通過索引 也叫下標 來序列成員 python常見的序列包括字串 元組和列表等,位元組串 bytes 也是序列,namedtuple也是序列。區別 1 列表是可變的,元組是不可變的 元...

Open CV VS配置的四步走

網上的配置一大堆,自己精簡一下,節省你我時間,一下以我的環境 win7 vs2010 open cv 2.4.10 為例。計算機 屬性 高階屬性設定 環境變數 系統變數 path 雙擊path新增你的open cv的路徑 d open cv opencv build x64 vc10 bin 雙擊 ...