Task3 模型調優

2021-09-05 09:48:19 字數 3971 閱讀 7456

使用網格搜尋法對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 等頻...