使用網格搜尋法對7個模型進行調優(調參時採用五折交叉驗證的方式),並進行模型評估
import pandas as pd
import numpy as np
from sklearn.model_selection import gridsearchcv
from sklearn.model_selection import train_test_split
from sklearn.svm import svc
from sklearn.tree import decisiontreeclassifier
from sklearn.linear_model import logisticregression
from lightgbm import lgbmclassifier
from xgboost import xgbclassifier
from sklearn.ensemble import randomforestclassifier
from sklearn.ensemble import gradientboostingclassifier
from sklearn.metrics import accuracy_score
from sklearn.metrics import roc_auc_score
import warnings
warnings.filterwarnings(action =
'ignore'
, category = deprecationwarning)
df = pd.read_csv(
'data_all.csv'
)df.head(
)y = df[
'status'
]x = df.drop(
'status'
, axis=1)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=
0.3, random_state=
2018
)lr = logisticregression(
)lr.fit(x_train,y_train)
svm = svc(probability=
true
)svm.fit(x_train,y_train)
dt = decisiontreeclassifier(
)dt.fit(x_train,y_train)
gbdt=gradientboostingclassifier(
)gbdt.fit(x_train,y_train)
rfc=randomforestclassifier(
)rfc.fit(x_train,y_train)
gbm=lgbmclassifier(
)gbm.fit(x_train, y_train)
xgbc=xgbclassifier(
)xgbc.fit(x_train, y_train)
defgride_search
(model,para)
: grid = gridsearchcv(model,para,cv =
5,scoring =
'accuracy'
) grid = grid.fit(x_train,y_train)
ifhasattr
(model,
'decision_function'):
y_predict_pro = grid.decision_function(x_test)
y_default_predict_pro = model.decision_function(x_test)
else
: y_predict_pro = grid.predict_proba(x_test)[:
,1] y_default_predict_pro = model.predict_proba(x_test)[:
,1]print
('引數調整前後對比:'
)print
('best score:'
,grid.best_score_)
print
('最優引數:'
,grid.best_params_)
print
('預設引數 auc:'
, roc_auc_score(y_test,y_default_predict_pro)
)print
('最優引數 auc:'
, roc_auc_score(y_test,y_predict_pro)
)para =
print
('logisticregression: '
)gride_search(lr,para)
para =
print
('svm: '
)gride_search(svm,para)
para =
print
('decisiontreeclassifier: '
)gride_search(dt,para)
para =
print
('gradientboostingclassifier: '
)gride_search(gbdt,para)
para=
print
('randomforestclassifier: '
)gride_search(rfc,para)
para =
print
('lgb: '
)gride_search(gbm,para)
para =
print
('xgb: '
)gride_search(xgbc,para)
logisticregression:
引數調整前後對比:
best score: 0.7938082356477307
最優引數:
預設引數 auc: 0.5674548527432631
最優引數 auc: 0.7706461978237509
decisiontreeclassifier:
引數調整前後對比:
best score: 0.7730688307784791
最優引數:
預設引數 auc: 0.5751828320449022
最優引數 auc: 0.7053561182226951
gradientboostingclassifier:
引數調整前後對比:
best score: 0.7965133754132853
最優引數:
預設引數 auc: 0.7623965864396524
最優引數 auc: 0.7674720666019844
randomforestclassifier:
引數調整前後對比:
best score: 0.7932070934776074
最優引數:
預設引數 auc: 0.7037573158899566
最優引數 auc: 0.7594298039706633
lgb:
引數調整前後對比:
best score: 0.7962128043282236
最優引數:
預設引數 auc: 0.7574019592501017
最優引數 auc: 0.7777234411025216
xgb:
引數調整前後對比:
best score: 0.7968139464983469
最優引數:
預設引數 auc: 0.7713634419371329
最優引數 auc: 0.7705392632468467
svm沒跑出來!等跑出來我再加上!
task3初級演算法
熵 原本物理學中的定義,後來夏農將其引申到啦資訊理論領域,用來表示資訊量的大小。資訊量大 分類越不 純淨 對應的熵值就越大,反之亦然。資訊熵的計算公式 聯合熵 一維隨機變數分布推廣到多維隨機變數分布。聯合熵的計算公式 條件熵 h y x 表示在已知隨機變數 x 的條件下隨機變數 y 的不確定性。條件...
Task 3 特徵工程
1 通過箱線圖 或3 sigma 分析刪除異常值 2 box cox轉換 處理有偏分布 3 長尾截斷 1 標準化 換為正態分佈 2 歸一化 3 針對冪律分布,可採用公式 1 x 1 median 1 等頻分桶 2 等距分桶 3 best ks 分桶 類似利用基尼指數進行二分類 4 卡方分桶 1 不處...
Task 3 特徵工程
1.異常處理 2.特徵歸一化 標準化 3.資料分桶 4.缺失值處理 5.特徵構造 1.異常處理 1 通過箱線圖 或3 sigma 分析刪除異常值 2 box cox轉換 處理有偏分布 3 長尾截斷 1 標準化 換為正態分佈 2 歸一化 3 針對冪律分布,可採用公式 1 x 1 median 1 等頻...