分類預測 | Matlab實現GA-XGBoost遺傳算法優化XGBoost的多特征分類預測

分類預測 | Matlab實現GA-XGBoost遺傳算法優化XGBoost的多特征分類預測

目錄

    • 分類預測 | Matlab實現GA-XGBoost遺傳算法優化XGBoost的多特征分類預測
      • 效果一覽
      • 基本介紹
      • 程序設計
      • 參考資料

效果一覽

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

5

基本介紹

Matlab實現GA-XGBoost遺傳算法優化XGBoost的多特征分類預測,輸入多個特征,分四類。
XGBoost的核心算法思想基本就是:不斷地添加樹,不斷地進行特征分裂來生長一棵樹,每次添加一個樹,其實是學習一個新函數f(x),去擬合上次預測的殘差。當我們訓練完成得到k棵樹,我們要預測一個樣本的分數,其實就是根據這個樣本的特征,在每棵樹中會落到對應的一個葉子節點,每個葉子節點就對應一個分數。最后只需要將每棵樹對應的分數加起來就是該樣本的預測值。

程序設計

  • 完整程序和數據下載:Matlab實現GA-XGBoost遺傳算法優化XGBoost的多特征分類預測
%%  清空環境變量
warning off             % 關閉報警信息
close all               % 關閉開啟的圖窗
clear                   % 清空變量
clc                     % 清空命令行%%  讀取數據
res = xlsread('data.xlsx');%%  分析數據
num_class = length(unique(res(:, end)));  % 類別數(Excel最后一列放類別)
num_res = size(res, 1);                   % 樣本數(每一行,是一個樣本)
num_size = 0.7;                           % 訓練集占數據集的比例
res = res(randperm(num_res), :);          % 打亂數據集(不打亂數據時,注釋該行)
flag_conusion = 1;                        % 標志位為1,打開混淆矩陣(要求2018版本及以上)%%  設置變量存儲數據
P_train = []; P_test = [];
T_train = []; T_test = [];%%  劃分數據集
for i = 1 : num_classmid_res = res((res(:, end) == i), :);           % 循環取出不同類別的樣本mid_size = size(mid_res, 1);                    % 得到不同類別樣本個數mid_tiran = round(num_size * mid_size);         % 得到該類別的訓練樣本個數P_train = [P_train; mid_res(1: mid_tiran, 1: end - 1)];       % 訓練集輸入T_train = [T_train; mid_res(1: mid_tiran, end)];              % 訓練集輸出P_test  = [P_test; mid_res(mid_tiran + 1: end, 1: end - 1)];  % 測試集輸入T_test  = [T_test; mid_res(mid_tiran + 1: end, end)];         % 測試集輸出
end%%  數據轉置
P_train = P_train'; P_test = P_test';
T_train = T_train'; T_test = T_test';%%  得到訓練集和測試樣本個數
M = size(P_train, 2);
N = size(P_test , 2);%%  數據歸一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test  = mapminmax('apply', P_test, ps_input);t_train = T_train;
t_test  = T_test;%%  數據轉置
p_train = p_train'; p_test = p_test';
t_train = t_train'; t_test = t_test';%%  參數設置
fun = @getObjValue;                 % 目標函數
dim = 3;                            % 優化參數個數
lb  = [001, 001, 0.01];             % 優化參數目標下限(最大迭代次數,深度,學習率)
ub  = [ 50, 012,  0.1];             % 優化參數目標上限(最大迭代次數,深度,學習率)

參考資料

[1] https://blog.csdn.net/kjm13182345320/article/details/128163536?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/128151206?spm=1001.2014.3001.5502

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/35140.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35140.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/35140.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Hadoop集群搭建】集群崩潰處理及啟動時常見報錯解決辦法

目錄 1. 集群崩潰處理 1.1 殺死進程 1.2 刪除目錄(logs/和hadoopdata/) 1.3 重新初始化集群 1.4 重新啟動集群 2. 啟動時常見報錯 2.1 報錯如下 2.2 在運行程序測試 MapReduce 計算框架時報錯如下 2.3 報錯如下 1. 集群崩潰處理 1.1 殺死進程 sbin/st…

Clickhouse的基本sql語句

1,建庫語句 create database if not exists mytestdb on cluster default_cluster;注意:用戶在集群中創建數據庫或者表時使用ON CLUSTER語句,保證各個ClickHouse節點上數據庫、表的元信息相同。 2,建表 -- 創建復制表 create t…

SpringBoot優點達項目實戰:項目基本配置(二)

SpringBoot優點達項目實戰:項目基本配置(二) 文章目錄 SpringBoot優點達項目實戰:項目基本配置(二)1、項目初始化配置2、MyBatisPlus配置3、Knife配置4、定義統一返回數據結構 1、項目初始化配置 創建appli…

學習筆記——動態路由——RIP(RIP工作原理/防環機制)

三、RIP工作原理/防環機制 1、工作原理 配置好RIP的路由器會每隔30s,向鄰居路由器自動發送RIP路由更新報文。報文里面攜帶了其所知道的所有路由。 通過發送數據包進行路由信息的交互,路由器啟動RIP協議,向周圍鄰居路由器傳遞request(請求)response(響…

克隆網站的風險

克隆網站的風險 隨著互聯網的快速發展,克隆網站也變得越來越常見。克隆網站是指復制原始網站的外觀和功能,并偽裝成原始網站。雖然克隆網站可以提供與原始網站相似的服務和體驗,但它們也帶來了一系列風險。本文將探討克隆網站的風險&#xff…

我的故事與思考

在24年的高考帷幕落下之后,我們站在了一個新的起點,面對著即將開始的大學新生活,我們面臨著一道重要的選擇題:是選擇一個心儀的專業,還是選擇一個知名度更高的學校?這是一個困擾了眾多考生和家長的長期難題…

Docker 從入門到精通(大全)

一、概述 1.1 基本概念 Docker 是一個開源的應用容器引擎,基于 Go 語言 并遵從 Apache2.0 協議開源。 Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。…

使用QtGui顯示QImage的幾種方法

問題描述 我是一名剛學習Qt的新手,正在嘗試創建一個簡單的GUI應用程序。當點擊一個按鈕時,顯示一張圖片。我可以使用QImage對象讀取圖片,但是否有簡單的方法調用一個Qt函數,將QImage作為輸入并顯示它? 方法一:使用QLabel顯示QImage 最簡單的方式是將QImage添加到QLabe…

bigtop gradle 任務依賴關系

./gradlew deb 會編譯ubuntu的所有deb包 任務deb會依賴17個任務,它們會按字母排序執行,如下: alluxio-deb bigtop-groovy-deb bigtop-jsvc-deb bigtop-utils-deb flink-deb hadoop-deb hbase-deb hive-deb kafka-deb livy-deb phoenix-deb …

這5款國內可用的寶藏AI視頻工具,不允許有人還不知道!(建議收藏)

文章首發于公眾號:X小鹿AI副業 大家好,我是程序員X小鹿,前互聯網大廠程序員,自由職業2年,也一名 AIGC 愛好者,持續分享更多前沿的「AI 工具」和「AI副業玩法」,歡迎一起交流~ 前幾天一位粉絲說給…

【MySQL】數據庫——存儲引擎

一、存儲引擎概述 1.概念 MySQL中的數據用各種不同的技術存儲在文件中,每一種技術都使用不同的存儲機制、索引技巧、鎖定水平并最終提供不同的功能和能力,這些不同的技術以及配套的功能在MySQL中稱為存儲引擎存儲引擎是MySQL將數據存儲在文件系統中的存…

會聲會影2024永久激活碼序列號注冊機分享

大家好呀,今天我想給大家安利一款我最近超級喜歡的軟件——會聲會影2024!🌟 作為一個視頻編輯愛好者,我嘗試過很多視頻編輯軟件,但總感覺少了那么一點點“火花”。直到我遇到了會聲會影2024,它完全改變了我…

環境科學SCI期刊,IF=3+,易錄用,幾乎不退稿

一、期刊名稱 International Journal of Environmental Science and Technology 二、期刊簡介概況 期刊類型:SCI 學科領域:環境科學 影響因子:3.1 中科院分區:4區 三、期刊簡介 International Journal of Environmental Sci…

C++_STL---string類

前言 說起string類,首先需要了解的是 - string類是什么? std::string是類模板std::basic_string的一個元素類型為char的實例化,而basic_string則是對元素指針的封裝。由于basic_string的實現對字符串操作進行了優化,所以它不能用…

深入理解計算機系統 CSAPP 家庭作業6.45

CS:APP3e, Bryant and OHallaron 可以參考這里 void bijk(array A, array B, array C, int n, int bsize) {int i, j, k, kk, jj;double sum;int en bsize*(n/bsize);for (i 0; i < n; i)for (j 0; j < n; j)C[i][j] 0.0;for (kk 0; kk < en; kk bsize) {for (j…

QT拖放事件之八:通過全局剪切板中的接口QClipboard::mimeData()來獲取MIME類型數據

1、演示效果 首先向剪切板寫入數據,然后點擊paste按鈕進行從全局剪切板中 獲取 MIME數據。。。 2、核心代碼 void Widget::on_pasteBtn_clicked() {const QClipboard* clipBoard = QGuiApplication::clipboard()

前端路由中的meta、matched是什么?有哪些作用?

在前端路由中&#xff0c;尤其是在 Vue.js 這樣的框架中&#xff0c;meta 和 matched 是兩個常見的概念&#xff0c;它們提供了關于路由的額外信息和上下文 1. meta 一個可以附加到 Vue Router 路由定義上的自定義字段 它通常用于存儲一些與路由相關的元數據或信息&#xff0…

算法07 深度優先搜索及相關問題詳解

深搜與廣搜是搜索算法中最常用的兩種算法&#xff0c;通過深度優先搜索解決問題還會用到回溯和剪枝&#xff0c;讓我們一起進入本章&#xff0c;了解深搜的基本概念和模板&#xff0c;并學會解決一些常見問題。 目錄 問題導入 走迷宮問題 如何走&#xff1f; 問題建模 如何…

python ----- xml 命名空間與xpath詳解

一、簡介 本文章以如下xml 樣例進行講解命名空間和xpath xml_text"""<?xml version"1.0"?><actors xmlns:fictional"http://characters.example.com"xmlns"http://people.example.com"><actor><name>…

SpringBean的管理

一、bean的名字與標識符 <bean id"" class""></bean> bean的名字作用: 獲取這個bean通過bean名字獲取 bean名字配置方式: id: 唯一標志符, 命名規范與變量命名規范一樣, 包含特殊符號name: 配置名字: 可以包含特殊符號,沒有要求, 比如. 一…