數據源:bankloan.xls
bankloan.xls
模型結果
有效特征
模型的準確率
備注
# 邏輯回歸本質上還是一種線性模型,模型有效性檢驗本質上還是做線性相關檢驗
# 因此篩選出來的變量,說明和結果具有比較強的線性相關性
# 而被篩選的變量并不一定就跟結果沒有關系,因為它們之間有可能是非線性關系
# 使用了穩定性選擇方法中的隨機邏輯回歸進行特征,然后利用篩選后的特征建立邏輯回歸模型,輸出平均平均正確率
# 遞歸特征消除的主要思想是反復的構建模型然后選出最好的或者最差的特征,把選出來的特征放到一邊,然后在剩余的特征
# 上重復這個過程,知道遍歷所有特征,這過程中特征被消除的次序就是特征的排序。
# 因此,這是一種尋找最優特征子集的貪心算法
# Scikit-Learn 提供RFE包,可以用戶特征消除,還提供了RFECV,可以通過交叉驗證來對特征進行排序
# 穩定特征是一種基于二次抽樣和選擇算法相結合較新的方法
# 選擇算法可以使回歸、SVM或者其他類似的方法
# 主要思想是在不同的數據子集和特征子集上運行特征算法,不斷重復
源代碼
filename = 'F:/python 數據挖掘分析實戰/Data/bankloan.xls'
data = pd.read_excel(filename)
x = data.iloc[:,:8].as_matrix()
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() # 獲取特征篩選結果,也可以通過.scores_方法獲取各個特征的分數
'''
利用Scikit-Learn 對這個數據進行邏輯回歸分析,首先進行特征篩選,特征篩選的方法有很,主要包含在Scikit_Learn 的feature_selection 庫中
比較簡單的有通過F檢驗來給出各個特征的F值和P值,從而可以篩選變量(選擇F值打的或者P值小的特征)。其次有遞歸特征消除和穩定性選擇等比較新的方法
'''
print(u'通過邏輯回歸模型篩選特征結束')
print(u'有效特征為:%s' % ','.join(data.columns[rlr.get_support()]))
x = data[data.columns[rlr.get_support()]].as_matrix() # 篩選好特征
lr = LR() # 建立邏輯貨柜模型
lr.fit(x, y) # 用篩選后的特征數據來訓練模型
print(u'邏輯回歸模型訓練結束')
print(u'模型的平均正確率為:%s' % lr.score(x, y)) # 給出模型的平均正確率
參考資料:《Python數據分析與挖掘實戰》