Rumah pangkalan data tutorial mysql 利用SVM解决2维空间向量的3级分类问题

利用SVM解决2维空间向量的3级分类问题

Jun 07, 2016 pm 03:43 PM
svm Pengelasan guna vektor angkasa lepas selesaikan soalan

【原文:http://blog.csdn.net/firefight/article/details/6400060】 为了学习OPENCV SVM分类器, 参考网上的 利用SVM解决2维空间向量的分类问题 实现并改为C代码,仅供参考 环境:OPENCV2.2 VS2008 步骤: 1,生成随机的点,并按一定的空间分布将其归类 2,

【原文:http://blog.csdn.net/firefight/article/details/6400060】

为了学习OPENCV SVM分类器, 参考网上的"利用SVM解决2维空间向量的分类问题"实现并改为C++代码,仅供参考

 

环境:OPENCV2.2 + VS2008

步骤:
1,生成随机的点,并按一定的空间分布将其归类
2,创建SVM并利用随机点样本进行训练
3,将整个空间按SVM分类结果进行划分,并显示支持向量

 

[cpp] view plaincopy

  1. #include "stdafx.h"  
  2. #include   
  3.   
  4. void drawCross(Mat &img, Point center, Scalar color)  
  5. {  
  6.     int col = center.x > 2 ? center.x : 2;  
  7.     int row = center.y> 2 ? center.y : 2;  
  8.   
  9.     line(img, Point(col -2, row - 2), Point(col + 2, row + 2), color);    
  10.     line(img, Point(col + 2, row - 2), Point(col - 2, row + 2), color);    
  11. }  
  12.   
  13. int newSvmTest(int rows, int cols, int testCount)  
  14. {  
  15.     if(testCount > rows * cols)  
  16.         return 0;  
  17.   
  18.     Mat img = Mat::zeros(rows, cols, CV_8UC3);  
  19.     Mat testPoint = Mat::zeros(rows, cols, CV_8UC1);  
  20.     Mat data = Mat::zeros(testCount, 2, CV_32FC1);  
  21.     Mat res = Mat::zeros(testCount, 1, CV_32SC1);  
  22.   
  23.     //Create random test points  
  24.     for (int i= 0; i
  25.     {   
  26.         int row = rand() % rows;  
  27.         int col = rand() % cols;  
  28.   
  29.         if(testPoint.atchar>(row, col) == 0)  
  30.         {  
  31.             testPoint.atchar>(row, col) = 1;  
  32.             data.atfloat>(i, 0) = float (col) / cols;   
  33.             data.atfloat>(i, 1) = float (row) / rows;   
  34.         }  
  35.         else  
  36.         {  
  37.             i--;  
  38.             continue;  
  39.         }  
  40.   
  41.         if (row > ( 50 * cos(col * CV_PI/ 100) + 200) )  
  42.         {   
  43.             drawCross(img, Point(col, row), CV_RGB(255, 0, 0));  
  44.             res.atint>(i, 0) = 1;   
  45.         }   
  46.         else   
  47.         {   
  48.             if (col > 200)   
  49.             {   
  50.                 drawCross(img, Point(col, row), CV_RGB(0, 255, 0));  
  51.                 res.atint>(i, 0) = 2;   
  52.             }   
  53.             else   
  54.             {   
  55.                 drawCross(img, Point(col, row), CV_RGB(0, 0, 255));  
  56.                 res.atint>(i, 0) = 3;   
  57.             }   
  58.         }   
  59.   
  60.     }  
  61.   
  62.     //Show test points  
  63.     imshow("dst", img);  
  64.     waitKey(0);  
  65.   
  66.     /////////////START SVM TRAINNING//////////////////  
  67.     CvSVM svm = CvSVM();   
  68.     CvSVMParams param;   
  69.     CvTermCriteria criteria;  
  70.   
  71.     criteria= cvTermCriteria(CV_TERMCRIT_EPS, 1000, FLT_EPSILON);  
  72. /* SVM种类:CvSVM::C_SVC 
    Kernel的种类:CvSVM::RBF
    degree:10.0(此次不使用) 
    gamma:8.0 
    coef0:1.0(此次不使用)
    C:10.0 
    nu:0.5(此次不使用) 
    p:0.1(此次不使用) 
    然后对训练数据正规化处理,并放在CvMat型的数组里。*/

  73.     param= CvSVMParams (CvSVM::C_SVC, CvSVM::RBF, 10.0, 8.0, 1.0, 10.0, 0.5, 0.1, NULL, criteria);   
  74.     svm.train(data, res, Mat(), Mat(), param);  
  75.   
  76.     for (int i= 0; i
  77.     {   
  78.         for (int j= 0; j
  79.         {   
  80.             Mat m = Mat::zeros(1, 2, CV_32FC1);  
  81.             m.atfloat>(0,0) = float (j) / cols;  
  82.             m.atfloat>(0,1) = float (i) / rows;  
  83.   
  84.             float ret = 0.0;   
  85.             ret = svm.predict(m);   
  86.             Scalar rcolor;   
  87.   
  88.             switch ((int) ret)   
  89.             {   
  90.                 case 1: rcolor= CV_RGB(100, 0, 0); break;   
  91.                 case 2: rcolor= CV_RGB(0, 100, 0); break;   
  92.                 case 3: rcolor= CV_RGB(0, 0, 100); break;   
  93.             }   
  94.   
  95.             line(img, Point(j,i), Point(j,i), rcolor);  
  96.         }   
  97.     }  
  98.   
  99.     imshow("dst", img);  
  100.     waitKey(0);  
  101.   
  102.     //Show support vectors  
  103.     int sv_num= svm.get_support_vector_count();   
  104.     for (int i= 0; i
  105.     {   
  106.         const float* support = svm.get_support_vector(i);   
  107.         circle(img, Point((int) (support[0] * cols), (int) (support[1] * rows)), 5, CV_RGB(200, 200, 200));   
  108.     }  
  109.   
  110.     imshow("dst", img);  
  111.     waitKey(0);  
  112.   
  113.     return 0;  
  114. }  
  115.   
  116. int main(int argc, char** argv)  
  117. {  
  118.     return newSvmTest(400, 600, 100);  
  119. }  

 

学习样本:

利用SVM解决2维空间向量的3级分类问题

 

分类:

利用SVM解决2维空间向量的3级分类问题

 

支持向量:

利用SVM解决2维空间向量的3级分类问题

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Penyelesaian kepada masalah bahawa sistem Win11 tidak dapat memasang pek bahasa Cina Penyelesaian kepada masalah bahawa sistem Win11 tidak dapat memasang pek bahasa Cina Mar 09, 2024 am 09:48 AM

Penyelesaian kepada masalah sistem Win11 tidak dapat memasang pek bahasa Cina Dengan pelancaran sistem Windows 11, ramai pengguna mula menaik taraf sistem pengendalian mereka untuk mengalami fungsi dan antara muka baharu. Walau bagaimanapun, sesetengah pengguna mendapati bahawa mereka tidak dapat memasang pek bahasa Cina selepas menaik taraf, yang menyusahkan pengalaman mereka. Dalam artikel ini, kami akan membincangkan sebab mengapa sistem Win11 tidak dapat memasang pek bahasa Cina dan menyediakan beberapa penyelesaian untuk membantu pengguna menyelesaikan masalah ini. Analisis sebab Pertama, mari kita menganalisis ketidakupayaan sistem Win11 untuk

Lima petua untuk mengajar anda cara menyelesaikan masalah telefon Black Shark tidak dihidupkan! Lima petua untuk mengajar anda cara menyelesaikan masalah telefon Black Shark tidak dihidupkan! Mar 24, 2024 pm 12:27 PM

Apabila teknologi telefon pintar terus berkembang, telefon bimbit memainkan peranan yang semakin penting dalam kehidupan seharian kita. Sebagai telefon perdana yang memfokuskan pada prestasi permainan, telefon Black Shark sangat digemari oleh pemain. Namun, kadangkala kita juga menghadapi situasi telefon Black Shark tidak boleh dihidupkan Pada masa ini, kita perlu mengambil beberapa langkah untuk menyelesaikan masalah ini. Seterusnya, izinkan kami berkongsi lima petua untuk mengajar anda cara menyelesaikan masalah telefon Black Shark tidak dihidupkan: Langkah 1: Periksa kuasa bateri Pertama, pastikan telefon Black Shark anda mempunyai kuasa yang mencukupi. Ia mungkin kerana bateri telefon telah habis

Pemacu tidak boleh dimuatkan pada peranti ini Bagaimana untuk menyelesaikannya? (Diuji secara peribadi dan sah) Pemacu tidak boleh dimuatkan pada peranti ini Bagaimana untuk menyelesaikannya? (Diuji secara peribadi dan sah) Mar 14, 2024 pm 09:00 PM

Semua orang tahu bahawa jika komputer tidak dapat memuatkan pemacu, peranti mungkin tidak berfungsi dengan betul atau berinteraksi dengan komputer dengan betul. Jadi bagaimana kita menyelesaikan masalah apabila kotak gesaan muncul pada komputer bahawa pemandu tidak boleh dimuatkan pada peranti ini? Editor di bawah akan mengajar anda dua cara untuk menyelesaikan masalah dengan mudah. Tidak dapat memuatkan pemacu pada peranti ini Penyelesaian 1. Cari "Pengasingan Kernel" dalam menu Mula. 2. Matikan Integriti Memori, dan ia akan menggesa "Integriti Memori telah dimatikan. Peranti anda mungkin terdedah. Klik di belakang untuk mengabaikannya, dan ia tidak akan menjejaskan penggunaan." 3. Masalah boleh diselesaikan selepas menghidupkan semula mesin.

Bagaimana untuk menyelesaikan masalah menyimpan gambar secara automatik semasa menerbitkan di Xiaohongshu? Di manakah imej yang disimpan secara automatik semasa menyiarkan? Bagaimana untuk menyelesaikan masalah menyimpan gambar secara automatik semasa menerbitkan di Xiaohongshu? Di manakah imej yang disimpan secara automatik semasa menyiarkan? Mar 22, 2024 am 08:06 AM

Dengan perkembangan media sosial yang berterusan, Xiaohongshu telah menjadi platform untuk lebih ramai golongan muda berkongsi kehidupan mereka dan menemui perkara yang indah. Ramai pengguna bermasalah dengan isu autosimpan semasa menyiarkan imej. Jadi, bagaimana untuk menyelesaikan masalah ini? 1. Bagaimana untuk menyelesaikan masalah menyimpan gambar secara automatik semasa menerbitkan di Xiaohongshu? 1. Kosongkan cache Pertama, kita boleh cuba mengosongkan data cache Xiaohongshu. Langkah-langkahnya adalah seperti berikut: (1) Buka Xiaohongshu dan klik butang "Saya" di sudut kanan bawah (2) Pada halaman tengah peribadi, cari "Tetapan" dan klik padanya (3) Tatal ke bawah dan cari "; Kosongkan Cache". Klik OK. Selepas mengosongkan cache, masukkan semula Xiaohongshu dan cuba siarkan gambar untuk melihat sama ada masalah penjimatan automatik telah diselesaikan. 2. Kemas kini versi Xiaohongshu untuk memastikan bahawa Xiaohongshu anda

Mentafsir ralat Oracle 3114: punca dan penyelesaian Mentafsir ralat Oracle 3114: punca dan penyelesaian Mar 08, 2024 pm 03:42 PM

Tajuk: Analisis Ralat Oracle 3114: Punca dan Penyelesaian Apabila menggunakan pangkalan data Oracle, anda sering menghadapi pelbagai kod ralat, antaranya ralat 3114 adalah yang biasa. Ralat ini biasanya melibatkan masalah pautan pangkalan data, yang mungkin menyebabkan pengecualian apabila mengakses pangkalan data. Artikel ini akan mentafsir ralat Oracle 3114, membincangkan puncanya dan memberikan kaedah khusus untuk menyelesaikan ralat dan contoh kod yang berkaitan. 1. Definisi ralat 3114 ralat Oracle 3114 lulus

Panduan untuk menyelesaikan masalah pemasangan WordPress dalam satu artikel Panduan untuk menyelesaikan masalah pemasangan WordPress dalam satu artikel Feb 29, 2024 am 11:06 AM

WordPress ialah sistem pengurusan kandungan sumber terbuka yang sangat popular Ramai pengguna dan perniagaan individu memilih untuk menggunakan WordPress untuk membina dan mengurus tapak web mereka sendiri. Walau bagaimanapun, semasa pemasangan WordPress, anda kadangkala menghadapi beberapa masalah, seperti ralat sambungan pangkalan data, isu kebenaran fail, dsb. Artikel ini akan memberikan panduan untuk menyelesaikan masalah pemasangan WordPress biasa dan membantu pengguna menyelesaikan masalah dengan cepat melalui contoh kod tertentu. Masalah 1: Ralat sambungan pangkalan data semasa memasang WordPress

Adakah anda bimbang tentang kod kacau-balau WordPress? Cuba penyelesaian ini Adakah anda bimbang tentang kod kacau-balau WordPress? Cuba penyelesaian ini Mar 05, 2024 pm 09:27 PM

Adakah anda bimbang tentang kod berantakan bahagian belakang WordPress? Cuba penyelesaian ini, contoh kod khusus diperlukan Dengan aplikasi WordPress yang meluas dalam pembinaan laman web, ramai pengguna mungkin menghadapi masalah kod bercelaru di bahagian belakang WordPress. Masalah seperti ini akan menyebabkan antara muka pengurusan latar belakang memaparkan aksara bercelaru, menyebabkan masalah besar kepada pengguna. Artikel ini akan memperkenalkan beberapa penyelesaian biasa untuk membantu pengguna menyelesaikan masalah watak bercelaru dalam bahagian belakang WordPress. Ubah suai fail wp-config.php dan buka wp-config.

Bagaimana untuk menyelesaikan masalah bunyi rendah pada telefon bimbit Apple Bagaimana untuk menyelesaikan masalah bunyi rendah pada telefon bimbit Apple Mar 08, 2024 pm 01:40 PM

Masalah bunyi rendah pada telefon Apple mungkin disebabkan oleh banyak sebab Pengguna boleh cuba menyelesaikan masalah dengan melaraskan tetapan kelantangan, menyemak mod senyap, mengosongkan pembesar suara dan alat dengar, memulakan semula telefon, memeriksa bicu fon kepala, dsb. Bagaimana untuk menyelesaikan masalah bunyi rendah pada telefon bimbit Apple 1. Laraskan tetapan kelantangan Mula-mula, pastikan tetapan kelantangan telefon bimbit anda betul. Anda boleh meningkatkan kelantangan dengan menekan butang kelantangan (biasanya terletak di sisi telefon). Selain itu, anda juga boleh melaraskan kelantangan dalam "Bunyi & Haptik" atau "Bunyi & Maklum Balas Haptik" dalam tetapan. 2. Semak mod senyap untuk memastikan telefon anda tidak berada dalam mod senyap. Anda boleh mencari suis redam di sebelah butang kelantangan di sebelah. Jika suis bisu dihidupkan, bunyi akan dimatikan. 3. Bersihkan pembesar suara dan alat dengar Kadangkala pembesar suara dan alat dengar mungkin diselaputi habuk.

See all articles