模型調優

来源:https://www.cnblogs.com/mambakb/archive/2018/12/24/10170309.html
-Advertisement-
Play Games

k折交叉驗證 第一步,不重覆抽樣將原始數據隨機分為 k 份。第二步,每一次挑選其中 1 份作為測試集,剩餘 k-1 份作為訓練集用於模型訓練。第三步,重覆第二步 k 次,這樣每個子集都有一次機會作為測試集,其餘機會作為訓練集。在每個訓練集上訓練後得到一個模型,用這個模型在相應的測試集上測試,計算並保 ...


k折交叉驗證

第一步,不重覆抽樣將原始數據隨機分為 k 份。
第二步,每一次挑選其中 1 份作為測試集,剩餘 k-1 份作為訓練集用於模型訓練。
第三步,重覆第二步 k 次,這樣每個子集都有一次機會作為測試集,其餘機會作為訓練集。
在每個訓練集上訓練後得到一個模型,
用這個模型在相應的測試集上測試,計算並保存模型的評估指標,
第四步,計算 k 組測試結果的平均值作為模型精度的估計,並作為當前 k 折交叉驗證下模型的性能指標。

在這裡我們採用5折交叉驗證

網格搜索

GridSearchCV,它存在的意義就是自動調參,只要把參數輸進去,就能給出最優化的結果和參數。但是這個方法適合於小數據集,一旦數據的量級上去了,很難得出結果。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from xgboost import XGBClassifier
from sklearn.metrics import roc_auc_score
from sklearn.metrics import accuracy_score
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score
from sklearn.metrics import roc_curve,auc
from sklearn.model_selection import train_test_split,GridSearchCV
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from lightgbm import LGBMClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn import svm

data_all = pd.read_csv('D:\\data_all.csv',encoding ='gbk')

X = data_all.drop(['status'],axis = 1)
y = data_all['status']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,random_state=2018)
#數據標準化
scaler = StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
#LR
lr = LogisticRegression(random_state = 2018)
param = {'C':[1e-3,0.01,0.1,1,10,100,1e3], 'penalty':['l1', 'l2']}
grid = GridSearchCV(estimator=lr, param_grid=param, scoring='roc_auc', cv=5)
grid.fit(X_train,y_train)
print(grid.best_params_)
print( grid.best_score_)
print(grid.score(X_test,y_test))
#DecisionTree
dt = DecisionTreeClassifier(random_state = 2018)
param = {'criterion':['gini','entropy'],'splitter':['best','random'],'max_depth':[2,4,6,8],'max_features':['sqrt','log2',None]}
grid = GridSearchCV(estimator = dt, param_grid=param, scoring='roc_auc', cv=5)
print(grid.best_params_)
print( grid.best_score_)
print(grid.score(X_test,y_test))
#SVM
svc = svm.SVC(random_state = 2018)
param = {'C':[1e-2, 1e-1, 1, 10],'kernel':['linear','poly','rbf','sigmoid']}
grid = GridSearchCV(estimator = svc, param_grid=param, scoring='roc_auc', cv=5)
print(grid.best_params_)
print( grid.best_score_)
print(grid.score(X_test,y_test))
#RandomForest
rft = RandomForestClassifier()
param = {'n_estimators':[10,20,50,100],'criterion':['gini','entropy'],'max_depth':[2,4,6,8,10,None],'max_features':['sqrt','log2',None]}
grid = GridSearchCV(estimator = rft, param_grid=param, scoring='roc_auc', cv=5)
print(grid.best_params_)
print( grid.best_score_)
print(grid.score(X_test,y_test))
#GBDT
gb = GradientBoostingClassifier()
param = {'max_features':['sqrt','log2',None],'learning_rate':[0.01,0.1,0.5,1],'n_estimators':range(20,200,20),'subsample':[0.2,0.5,0.7,1.0]}
grid = GridSearchCV(estimator = gb, param_grid=param, scoring='roc_auc', cv=5)
print(grid.best_params_)
print( grid.best_score_)
print(grid.score(X_test,y_test))
#XGBoost
xgb_c = XGBClassifier()
param = {'n_estimators':range(20,200,20),'max_depth':[2,6,10],'reg_lambda':[0.2,0.5,1]}
grid = GridSearchCV(estimator = xgb_c, param_grid=param, scoring='roc_auc', cv=5)
print(grid.best_params_)
print( grid.best_score_)
print(grid.score(X_test,y_test))
#LightGBM
lgbm_c = LGBMClassifier()
param = {'learning_rate': [0.2,0.5,0.7], 'max_depth': range(1,10,2), 'n_estimators':range(20,100,10)}
grid = GridSearchCV(estimator = lgbm_c, param_grid=param, scoring='roc_auc', cv=5)
grid.fit(X_train,y_train)
print(grid.best_params_)
print( grid.best_score_)
print(grid.score(X_test,y_test))

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、node.js 守護進程組件 forever 安裝 npm install forever -g 安裝完成後截圖: 2、安裝完成後在控制台輸入 forever 出現 -bash: forever: command not found 3、添加環境變數 執行命令 vim /etc/profile ...
  • 我是 Centos 最小化安裝的,安裝網後 Centos 竟然無法上網。。。有點奇葩, 應該是網卡沒有激活的問題了,下麵是解決的過程 ...
  • 一 前期準備 節點 IP 備註 falcon 私網:172.24.10.95 臨時公網:120.132.23.107 Open-Falcon服務端 node01 172.24.10.216 被監控端 節點 IP 備註 falcon 私網:172.24.10.95 臨時公網:120.132.23.10 ...
  • 同步更新於 "wendster大佬的個人博客" 搬運自 "我的洛谷博客" 可能會不定期更新! 因為前幾天給我的小炸雞加了一根記憶體條;而且先前裝的Xubuntu是32位的,使用極其不方便;再加上wendster大佬的慫恿,我決定給自己的電腦換一個Archlinux系統。由於安裝這個系統的麻煩程度~~世 ...
  • 1、簡介 如果你的伺服器的總是報告記憶體不足,並且時常因為記憶體不足而引發服務被強制kill的話,在不增加物理記憶體的情況下,啟用swap交換區作為虛擬記憶體是一個不錯的選擇。 為了測試一些功能我在阿裡雲購買了1核1G的ECS伺服器幾台(最便宜的了,再貴捨不得啊),一臺伺服器就安裝了LANMP,redis, ...
  • # **1.1 資料庫系統概述:** ## **1.1.1 資料庫的組成**![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20181224232336368.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naG ...
  • 一.需求背景 SQL Server開源的歸檔工具不多,DBA一般都是通過計劃任務來觸發執行,執行的腳本多是SP或者是SSIS包。SSIS包的性能稍好一些,但是維護更新成本高些。所以更常見的是通過SP腳本來實現歸檔操作。 當資料庫規模較小時,可以方便的直接在資料庫上進行腳本的編寫部署。但是隨著資料庫越 ...
  • MySQL 是世界上最流行的開源資料庫系統,而MariaDB(MySQL的一個分支)是世界上發展最快的開源資料庫系統。安裝MySQL伺服器之後,它的預設配置是不安全的,保護它是一般資料庫管理中的基本任務之一。 這將有助於加強和提升整體Linux伺服器安全性,因為攻擊者總是掃描系統任何部分的漏洞,而數... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...