python實現求特徵選擇的資訊增益

2022-10-04 18:30:15 字數 1885 閱讀 9105

使用python語言,實現求特徵選擇的資訊增益,可以同時滿足特徵中有連續型和二值離散型屬性的情況。

師兄讓我做乙個特徵選擇的**,我在網上找了一下,大部分都是用來求離散型屬性的資訊益益,但是我的資料是同時包含二值離散型和連續型屬性的,所以這裡實現了一下。

**塊import numpy as np

import math

class ig():

def __init__(self,x,y):

x = np.array(x)

n_feature = np.shfatheape(x)[1]

n_y = len(y)

orig_h = 0

for i in set(y):

orig_h += -(y.count(i)/n_y)*math.log(y.count(i)/n_y)

condi_h_list =

for i in range(n_feature):

feature = x[:,i]

sourted_feature = sorted(feature)

threshold = [(sourted_feature[inde-1]+sourted_feature[inde])/2 for inde in range(len(feature)) if inde != 0 ]

thre_s程式設計客棧et = set(threshold)

if float(max(feature)) in thre_set:

thre_set.remove(float(max(feature)))

if min(feature) in thre_set:

thre_setwww.cppcns.com.remove(min(feature))

pre_h = 0

for thre in thre_set:

lower = [y[s] for s in range(len(feature)) if feature[s] < thre]

highter = [y[s] for s in range(len(feature)) if feature[s] > thre]

h_l = 0

fathefor l in set(lower):

h_l += -(lower.count(l) / len(lower))*math.log(lower.count(l) / len(lower))

h_h = 0

for h in set(highter):

h_h += -(highter.count(h) / len(highter))*math.log(highter.count(h) / len(highter))

temp_condi_h = len(lower)/n_y *h_l+ len(highter)/n_y * h_h

condi_h = orig_h - temp_condi_h

pre_h = max(pre_h,condi_h)

condi_h_list.append(pre_h)

self.ig = condi_h_list

def getig(self):

return self.ig

if __name__ == "__main__":

x = [[1, 0, 0, 1],

[0, 1, 1, 1],

[0, 0, 1, 0]]

y = [0, 0, 1]

print(ig(x,y).getig())

輸出結果為:

[0.17441604792151594, 0.17441604792151594, 0.17441604792151594, 0.6365141682948128]

本文標題: python實現求特徵選擇的資訊增益

本文位址:

python 特徵選擇

variancethreshold是特徵選擇中的一項基本方法。它會移除所有方差不滿足閾值的特徵。預設設定下,它將移除所有方差為0的特徵,即那些在所有樣本中數值完全相同的特徵。假設我們有乙個帶有布林特徵的資料集,我們要移除那些超過80 的資料都為1或0的特徵。布林特徵是伯努利隨機變數,該類變數的方差為...

基於Filter的特徵選擇的python實現

class sklearn.feature selection.selectkbest score func k 10 score func是用於特徵選擇的方法,k是最終選擇的特徵數 或class sklearn.feature selection.selectpercentile score fu...

特徵選擇的方法

特徵選擇的方法大致可分為如下幾類 1.投影法 求出最優的投影向量w,絕對值較大的分量對應的特徵即所選特徵。求解w的方法很多,像lda,linear svm,lasso regression,sparse coding等都是適用的方法。3.filter 對單個特徵根據特定準則進行排序 如熵增益,分類錯...