1. 程式人生 > >機器學習之分類器——Matlab中各種分類器的使用總結(隨機森林、支援向量機、K近鄰分類器、樸素貝葉斯等)

機器學習之分類器——Matlab中各種分類器的使用總結(隨機森林、支援向量機、K近鄰分類器、樸素貝葉斯等)

      Matlab中常用的分類器有隨機森林分類器、支援向量機(SVM)、K近鄰分類器、樸素貝葉斯、整合學習方法和鑑別分析分類器等。各分類器的相關Matlab函式使用方法如下:

首先對以下介紹中所用到的一些變數做統一的說明:

    train_data——訓練樣本,矩陣的每一行資料構成一個樣本,每列表示一種特徵

    train_label——訓練樣本標籤,為列向量

    test_data——測試樣本,矩陣的每一行資料構成一個樣本,每列表示一種特徵

    test_label——測試樣本標籤,為列向量

①隨機森林分類器(Random Forest)

    TB=TreeBagger(nTree,train_data,train_label);

    predict_label=predict(TB,test_data);

②支援向量機(Support Vector Machine,SVM)

    SVMmodel=svmtrain(train_data,train_label);

    predict_label=svmclassify(SVMmodel,test_data);

③K近鄰分類器(KNN)

    KNNmodel=ClassificationKNN.fit(train_data,train_label,'NumNeighbors',1);

    predict_label=predict(KNNmodel,test_data);

④樸素貝葉斯(Naive Bayes)

    Bayesmodel=NaiveBayes.fit(train_data,train_label);

    predict_label=predict(Bayesmodel,test_data);

⑤整合學習方法(Ensembles for Boosting)

    Bmodel=fitensemble(train_data,train_label,'AdaBoostM1',100,'tree','type','classification');

    predict_label=predict(Bmodel,test_data);

⑥鑑別分析分類器(Discriminant Analysis Classifier)

    DACmodel=ClassificationDiscriminant.fit(train_data,train_label);

    predict_label=predict(DACmodel,test_data);

具體使用如下:(練習資料下載地址如下http://en.wikipedia.org/wiki/Iris_flower_data_set,簡單介紹一下該資料集:有一批花可以分為3個品種,不同品種的花的花萼長度、花萼寬度、花瓣長度、花瓣寬度會有差異,根據這些特徵實現品種分類)

%% 隨機森林分類器(Random Forest)
nTree=10;
B=TreeBagger(nTree,train_data,train_label,'Method', 'classification');
predictl=predict(B,test_data);
predict_label=str2num(cell2mat(predictl));
Forest_accuracy=length(find(predict_label == test_label))/length(test_label)*100;

%% 支援向量機 
% SVMStruct = svmtrain(train_data, train_label);
% predictl=svmclassify(SVMStruct,test_data);
% predict_label=str2num(cell2mat(predictl));
% SVM_accuracy=length(find(predict_label == test_label))/length(test_label)*100;  


%% K近鄰分類器(KNN)
% mdl = ClassificationKNN.fit(train_data,train_label,'NumNeighbors',1);
% predict_label=predict(mdl, test_data);
% KNN_accuracy=length(find(predict_label == test_label))/length(test_label)*100


%% 樸素貝葉斯 (Naive Bayes)
% nb = NaiveBayes.fit(train_data, train_label);
% predict_label=predict(nb, test_data);
% Bayes_accuracy=length(find(predict_label == test_label))/length(test_label)*100;


%% 整合學習方法(Ensembles for Boosting, Bagging, or Random Subspace)
% ens = fitensemble(train_data,train_label,'AdaBoostM1' ,100,'tree','type','classification');
% predictl=predict(ens,test_data);
% predict_label=str2num(cell2mat(predictl));
% EB_accuracy=length(find(predict_label == test_label))/length(test_label)*100;

%% 鑑別分析分類器(discriminant analysis classifier)
% obj = ClassificationDiscriminant.fit(train_data, train_label);
% predictl=predict(obj,test_data);
% predict_label=str2num(cell2mat(predictl));
% DAC_accuracy=length(find(predict_label == test_label))/length(test_label)*100;

%% 練習
% meas=[0 0;2 0;2 2;0 2;4 4;6 4;6 6;4 6];
% [N n]=size(meas);
% species={'1';'1';'1';'1';'-1';'-1';'-1';'-1'};
% ObjBayes=NaiveBayes.fit(meas,species);
% x=[3 3;5 5];
% result=ObjBayes.predict(x);

相關推薦

機器學習分類——Matlab各種分類的使用總結隨機森林支援向量K近鄰分類樸素

      Matlab中常用的分類器有隨機森林分類器、支援向量機(SVM)、K近鄰分類器、樸素貝葉斯、整合學習方法和鑑別分析分類器等。各分類器的相關Matlab函式使用方法如下:首先對以下介紹中所用到的一些變數做統一的說明:    train_data——訓練樣本,矩陣的每

參評機器學習筆記——鳶尾花資料集KNN決策樹樸素分析

最開始選取鳶尾花資料集來了解決策樹模型時,筆者是按照學習報告的形式來寫得,在這裡將以原形式上傳。格式較為繁複,希望讀者可以耐心看完,謝謝大家。目錄 6.總結 7.問題 1、問題描述  iris是鳶尾植物,這裡儲存了其萼片和花瓣的長寬,共4個屬性,鳶尾

利用spark做文字分類樸素模型

樸素貝葉斯模型 樸素貝葉斯法是基於貝葉斯定理與特徵條件獨立假設的分類方法。對於給定的訓練資料集,首先基於特徵條件獨立假設學習輸入/輸出的聯合概率分佈;然後基於此模型,對給定的輸入x,利用貝葉斯定理求出後驗概率最大的輸出y。至於樸素貝葉斯模型的原理部分,這裡就不

機器學習路: python 樸素分類 預測新聞類別

groups group news ckey put epo test electron final 使用python3 學習樸素貝葉斯分類api 設計到字符串提取特征向量 歡迎來到我的git下載源代碼: https://github.com/linyi0604/kag

機器學習樸素分類附C++程式碼

一、基本概念: 先驗概率(prior probability):是指根據以往經驗和分析得到的概率,如全概率公式,它往往作為"由因求果"問題中的"因"出現的概率。比如,拋一枚硬幣,正面朝上的概率P(A)=1/2,就是先驗概率。聯合概率:表示兩個事件共同發生的概率。A與B的

機器學習樸素分類實現

問題如下 比如:有如下的需求,要判斷某一句英語是不是侮辱性語句 分析思路 對於機器來說,可能不容易分辨出某一句話是不是侮辱性的句子,但是機器可以機械的進行分析,何為機械的進行分析,就是判斷某一個句子中侮辱性的單詞是不是達到一定數量(當然這

機器學習系列——樸素分類

表示 -h line log ima 條件 code 樸素貝葉斯 spa 貝葉斯定理: 其中: 表示事件B已經發生的前提下,事件A發生的概率,叫做事件B發生下事件A的條件概率。其基本求解公式為:。 機器學習系列——樸素貝葉斯分類器(二)

機器學習讀書筆記樸素基礎篇網站賬號分類

pan 技巧 nbsp 增強 就是 使用 分類問題 預測 結果 一、條件概率 在學習計算p1和p2概率之前,我們需要了解什麽是條件概率,就是指在事件B發生的情況下,事件A發生的概率,用P(A|B)來表示。 根據文氏圖,可以很清楚地看到在事件B發生的情況下,事件A發

機器學習分類——高樸素分類代碼實現

mod ces 數據 大於等於 即使 平均值 方差 很多 mode 一 高斯樸素貝葉斯分類器代碼實現 網上搜索不調用sklearn實現的樸素貝葉斯分類器基本很少,即使有也是結合文本分類的多項式或伯努利類型,因此自己寫了一遍能直接封裝的高斯類型NB分類器,當然與真正的源碼相

機器學習---樸素分類Machine Learning Naive Bayes Classifier

垃圾郵件 垃圾 bubuko 自己 整理 href 極值 multi 帶來 樸素貝葉斯分類器是一組簡單快速的分類算法。網上已經有很多文章介紹,比如這篇寫得比較好:https://blog.csdn.net/sinat_36246371/article/details/601

sklearn庫學習樸素分類

樸素貝葉斯模型 樸素貝葉斯模型的泛化能力比線性模型稍差,但它的訓練速度更快。它通過單獨檢視每個特徵來學習引數,並從每個特徵中收集簡單的類別統計資料。想要作出預測,需要將資料點與每個類別的統計資料進行比較,並將最匹配的類別作為預測結果。 GaussianNB應用於任意連續資料,

機器學習筆記樸素分類

一、概述 1.1 簡介 樸素貝葉斯(Naive Bayesian)是基於貝葉斯定理和特徵條件獨立假設的分類方法,它通過特徵計算分類的概率,選取概率大的情況進行分類,因此它是基於概率論的一種機器學習分類方法。因為分類的目標是確定的,所以也是屬於監督學習。 Q1:什麼是基於概率論的方

大資料Spark--- Spark機器學習樸素,酒水評估和分類案例學習,垃圾郵件過濾學習案例,電商商品推薦,電影推薦學習案例

一、Saprk機器學習介紹 ------------------------------------------------------------------ 1.監督學習 a.有訓練資料集,符合規範的資料 b.根據資料集,產生一個推斷函式

機器學習樸素分類方法

本文轉載自http://holynull.leanote.com/post/Logistic-2 樸素貝葉斯分類方法 前言 樸素貝葉斯分類演算法是機器學習領域最基本的幾種演算法之一。但是對於作者這樣沒有什麼資料基礎的老碼農來說,理解起來確實有一些困難。所以撰寫此文幫

機器學習西瓜書》學習筆記——第七章_分類_樸素分類

樸素:特徵條件獨立;貝葉斯:基於貝葉斯定理。 樸素貝葉斯是經典的機器學習演算法之一,也基於概率論的分類演算法,屬於監督學習的生成模型。樸素貝葉斯原理簡單,也很容易實現,多用於文字分類,比如垃圾郵件過濾。 1.演算法思想——基於概率的預測 貝葉斯決策論是概率框架下

機器學習樸素附垃圾郵件分類

樸素貝葉斯分類器介紹概述  樸素貝葉斯分類器技術基於貝葉斯定理,特別適用於輸入維數較高的情況。儘管樸素貝葉斯方法簡單,但它通常比更復雜的分類方法更勝一籌。                  

機器學習實踐】用Python實現樸素分類

       閱讀學習了《機器學習》第7章的貝葉斯分類器後,為了加深理解和加強python的程式碼能力,因此嘗試使用Python實現樸素貝葉斯分類器,由於初學Python的緣故,程式碼的一些實現方法可能比較繁瑣,可閱讀性有待提高。程式碼如下: #import numpy a

機器學習Gradient Tree BoostingGBDT-- GradientBoostingClassifier

機器學習之Gradient Tree Boosting中GBDT-- GradientBoostingClassifier # -*- coding: utf-8 -*- """ Created on Mon Dec 3 22:24:34 2018 @author:

Python機器學習與實戰筆記樸素分類

1聯合概率分佈 p(x,y)=p(y)P(x|y)  或者p(A交B)=p(A)xp(B)  p(A交B)不容易求,假設條件獨立拆分成兩個事件的乘積 2基本假設條件獨立性 3利用貝葉斯定理 p(y|x)=P(x,y)/p(x)=p(y)P(x|y)/sum(y-i)[p(

機器學習實戰——python實現簡單的樸素分類

基礎公式 貝葉斯定理:P(A|B) = P(B|A)*P(A)/P(B) 假設B1,B2…Bn彼此獨立,則有:P(B1xB2x…xBn|A) = P(B1|A)xP(B2|A)x…xP(Bn|A) 資料(虛構) A1 A2 A3 A4 A5 B