適用因變量通常有1和0(是否)兩種取值,表示取值爲1的機率.數組
import pandas as pd filename = '../data/bankloan.xls' data = pd.read_excel(filename) x = data.iloc[:,:8].as_matrix() #讀取自變量,並處理爲pd的二維數組 y = data.iloc[:,8].as_matrix() #讀取因變量,是否違約 from sklearn.linear_model import LogisticRegression as LR from sklearn.linear_model import RandomizedLogisticRegression as RLR rlr = RLR() #創建隨機邏輯迴歸模型,篩選變量 rlr.fit(x,y) #訓練模型, rlr.get_support() #篩選出結果,默認閾值0.25,能夠RLR(selection_threshold = 0.5)手動設置 print(u'經過隨機篩選模型選取特徵結束.') print(rlr.get_support()) print(rlr.scores_) # print(data.columns) # print(x) #print(u'有效特徵爲:s%' % ','.join(data.columns[rlr.get_support()])) print(u'有效特徵爲:%s' % ','.join(data.iloc[:,:8].columns[rlr.get_support()])) #有效特徵爲:工齡,地址,負債率,信用卡負債 x = data[data.iloc[:,:8].columns[rlr.get_support()]].as_matrix() #篩選好特徵 lr = LR() #創建邏輯迴歸模型 lr.fit(x,y) #用篩選好的特徵數據訓練模型 print(u'邏輯迴歸模型訓練結束.') print(u'模型的平均正確率:%s' % lr.score(x,y))
經過隨機篩選模型選取特徵結束. [False False True True False True True False] [ 0.085 0.085 0.98 0.4 0. 0.995 0.545 0.03 ] 有效特徵爲:工齡,地址,負債率,信用卡負債 Index(['工齡', '地址', '負債率', '信用卡負債'], dtype='object') 邏輯迴歸模型訓練結束. 模型的平均正確率:0.814285714286 Process finished with exit code 0
採用隨機邏輯迴歸剔除自變量(剔除false),邏輯迴歸的本質仍是一種線型模型,被篩選掉的變量不必定就跟結果不要緊,可能存在非線型相關.dom