機器學習之特徵篩選

2021-09-25 05:51:30 字數 3211 閱讀 2107

機器學習模型的訓練除了考慮模型的準確性之外,還要考慮計算效能。

冗餘的特徵雖然不會影響到模型的效能,但卻會使得計算機做出無用功。

特徵篩選與pca這類通過選擇主成分對特徵進行重建的方法有所區別:pca壓縮之後的特徵往往無法解釋;但是特徵篩選不存在對特徵值的修改,而更加側重於尋找那些對模型的效能提公升較大的少量特徵。

##此模型採用的titanic的資料集

import pandas as pd

titanic = pd.read_csv('')

##分離資料特徵與**目標

y = titanic['survived']

x = titanic.drop(['row.names','name','survived'],axis=1)

##對缺失資料進行填充

x['age'].fillna(x['age'].mean(),inplace=true)

x.fillna('unknown',inplace=true)

##分割資料,依然採用25%用於測試

from sklearn.model_selection import train_test_split

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.25,random_state=33)

##類別型特徵向量

from sklearn.feature_extraction import dictvectorizer

vec = dictvectorizer()

x_train = vec.fit_transform(x_train.to_dict(orient='record'))

x_test = vec.transform(x_test.to_dict(orient='record'))

##輸出處理後特徵向量的維度

print(len(vec.feature_names_))

##使用決策樹模型依靠所有特徵進行**,並作出效能評價

from sklearn.tree import decisiontreeclassifier

dt = decisiontreeclassifier(criterion='entropy')

dt.fit(x_train,y_train)

dt.score(x_test,y_test)

from sklearn import feature_selection

#篩選前20%的特徵,使用相同配置的決策樹模型進行**,並且評估效能

fs = feature_selection.selectpercentile(feature_selection.chi2,percentile=20)

x_train_fs = fs.fit_transform(x_train,y_train)

dt.fit(x_train_fs,y_train)

x_test_fs = fs.transform(x_test)

dt.score(x_test_fs,y_test)

##通過交叉驗證的方法,按照固定間隔的百分比篩選特徵,並作圖展示效能隨

##特徵篩選比例的變化

from sklearn.cross_validation import cross_val_score

import numpy as np

percentiles = range(1,100,2)

results =

for i in percentiles:

fs = feature_selection.selectpercentile(feature_selection.chi2,percentile=i)

x_train_fs = fs.fit_transform(x_train,y_train)

scores = cross_val_score(dt,x_train_fs,y_train,cv=5)

print(results)

##找到體現最佳效能特徵篩選的百分比

#分布的視覺化

##使用最佳篩選後的特徵,利用相同配置的模型在測試集上進行效能評估

from sklearn import feature_selection

fs = feature_selection.selectpercentile(feature_selection.chi2,percentile=7)

x_train_fs = fs.fit_transform(x_train,y_train)

dt.fit(x_train_fs,y_train)

x_test_fs = fs.transform(x_test)

dt.score(x_test_fs,y_test)

通過以上的**結果與輸出,我們可以得到如下的結果:

(1): 初步篩選後,最終的訓練與測試資料集有474個維度的特徵值

(2): 直接用474個維度進行決策樹進行**,測試集上的表現為81.76%

(3): 如果篩選前20%的特徵,測試集上的效能表現為82.37%

(4): 如果按照固定的間隔採用不同的百分比的特徵進行訓練與測試,可以看到最好的訓練在前7%左右

(5); 使用前7%的資料集進行**,該分類器的效能達到了85.71%,比**全部的維度提高了四個百分點

參考文章:

機器學習 特徵工程 特徵篩選

1 冗餘 部分特徵相關度太高,消耗計算效能,影響決策樹分支的選擇。2 雜訊 部分特徵是對 結果有負影響 3 降維 減少特徵數量 降維,使模型泛化能力更強,減少過擬合 4 特徵選擇與降維的關係 特徵選擇只篩選掉原本特徵裡和結果 關係不大的,後者做特徵的計算組合構成新特徵。svd pca降維也能解決一定...

機器學習之特徵組合 特徵交叉

特徵交叉是資料特徵的一種處理方式,通過特徵組合的方式增加特徵的維度,以求得更好的訓練效果。在實際場景中,我們常常遇到這要的情況,線性分類起無法在如下樣本中 無法畫一條直線將下列黃點和藍點分開 所以特徵組合是一種讓線性模型學習到非線性特徵的方式 例如在廣告模型中用到了大量的特徵組合,因為lr是廣告推廣...

機器學習 之 Hog特徵

方向梯度直方圖 histogram of oriented gradient,hog 特徵是一種在計算機視覺和影象處理中用來進行物體檢測的特徵描述子。它通過計算和統計影象區域性區域的梯度方向直方圖來構成特徵。它是一種能夠很好地描述影象區域性紋理或邊緣的方向密度分布的一種特徵。hog特徵結合 svm分...