`
grunt1223
  • 浏览: 422877 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

一个运用SVM进行回归的例子

阅读更多
#include "cv.h"
#include "highgui.h"
#include "ml.h"
#include <cmath>
#include <iostream>
#include <iomanip>
using namespace std;


//以下例子用来拟合正弦曲线

int main(int argc, char **argv)
{
   int num_train = 100;
   int num_test = 100;
   CvMat *train_data = cvCreateMat(num_train, 1, CV_32FC1);
   CvMat *train_response = cvCreateMat(num_train, 1, CV_32FC1);
   IplImage *dst=cvCreateImage(cvSize(400,320),8,3);
   cvZero(dst);
   dst->origin=1;

   cvLine( dst, cvPoint(1,160), cvPoint(400,160), cvScalar(255,255,255,0), 3, 8, 0 );
   cvLine( dst, cvPoint(8,1), cvPoint(8,320), cvScalar(255,255,255,0), 3, 8, 0 );


   CvMat *test_data = cvCreateMat(num_test, 1, CV_32FC1);
   CvMat *test_response = cvCreateMat(num_train, 1, CV_32FC1);

   //initilize the training data and testing data
   float *fptr_data = NULL, *fptr_response = NULL;
   const float PI = 3.1415926f;
   int i;
   for(i = 0; i < train_data->rows; i++)
   {
      fptr_data = (float *)(train_data->data.ptr + i * train_data->step); 
      *fptr_data = 2*PI/train_data->rows *i;
      //cout <<*fptr_data<<" ";
      fptr_response = (float *)(train_response->data.ptr + i * train_response->step); 
      *fptr_response = sin(*fptr_data);
      //cout <<*fptr_response<<endl;
   }
   for(i = 0; i < test_data->rows; i++)
   {
      fptr_data = (float *)(test_data->data.ptr + i * test_data->step); 
      *fptr_data = (2*PI/train_data->rows *i+0.5f); 
      fptr_response = (float *)(test_response->data.ptr + i * test_response->step); 
      *fptr_response = sin(*fptr_data); 
   } 

   CvSVM mysvm; 
   CvSVMParams param(103, 2, 2, 1, 1, 10, 1, 0.0001, NULL, 
      cvTermCriteria(CV_TERMCRIT_EPS, 100, 0.0001));
   mysvm.train(train_data, train_response, 0, 0, param); 
   float tmp;
   CvMat *sample = cvCreateMat(1,1, CV_32FC1); 
   cout<<"x\t\t"<<"y\t\t"<<"pre\t\t"<<"err"<<endl;
   
   cvNamedWindow("output",1);

   for(i = 0; i < test_data->rows; i++)
   {
      fptr_data = (float *)(test_data->data.ptr + i * test_data->step);
      *((float *)sample->data.ptr) = *fptr_data;
      tmp = mysvm.predict(sample);
	  float tmp2 = mysvm.predict(sample, false);
      fptr_response = (float *)(test_response->data.ptr + i * test_response->step);
      
      cout<<setprecision(4)<<*fptr_data<< "\t\t";
      cout<<setprecision(4)<<*fptr_response<<"\t\t";
      cout<<setprecision(4)<<tmp<<"\t\t";
      cout<<setprecision(4)<<tmp - *fptr_response<<endl;

      *fptr_data=*fptr_data*180/PI;
      *fptr_response=100*(*fptr_response)+160;
      tmp=100*tmp+160;

      cvCircle( dst , cvPointFrom32f( cvPoint2D32f(*fptr_data,*fptr_response) ) , 
         2, cvScalar(255,0,0,0) , -1 , 8 , 0 );
      cvCircle( dst , cvPointFrom32f( cvPoint2D32f(*fptr_data,tmp) ) , 
         2, cvScalar(0,0,255,0) , -1 , 8 , 0 );

      cvShowImage("output",dst);
      cvWaitKey(20);
   }

   cvWaitKey(0);

   cvReleaseImage(&dst);
   cvReleaseMat(&train_data);
   cvReleaseMat(&test_data);
   cvReleaseMat(&train_response);
   cvReleaseMat(&test_response);
   cvReleaseMat(&sample);
   return 0;
}



  • 大小: 14.2 KB
1
0
分享到:
评论
1 楼 hudaosheng 2012-07-12  
看不懂啊

相关推荐

    chapter14_matlab预测_回归预测_SVM_

    例如,以下是一个基本的MATLAB代码片段,展示了如何使用SVM进行回归训练和预测: ```matlab % 加载上证指数数据 load shanghaiStockData.mat % 分割数据集为训练集和测试集 trainData = shanghaiStockData(1:800,:...

    SVM Matlab 工具脚本

    通过深入理解和使用这个SVM Matlab工具脚本,不仅可以掌握SVM的基本概念,还能掌握如何在实际问题中运用SVM,以及如何通过调参来优化模型性能。这对于从事机器学习研究或应用的人员来说是非常有价值的。

    SVM.rar_SVM分类_svm opencv_vc6.0 svm_vc6.0 svm predict

    训练完成后,SVM模型会得到一个决策函数,用于对新数据进行分类。在这个程序中,"svm predict"部分就是实现预测功能,它接收新的样本点,应用决策函数,得出该点所属的类别。 在VC6.0环境下,我们需要注意编译环境...

    林智仁的SVM使用方法讲义

    SVM模型的核心思想是找到一个超平面,将不同类别的数据分隔开来,并且使得这个超平面到不同类别数据的距离最大化,即最大化分类间隔。数学表达式为 wTx+b=0,其中 w 是权重向量,x 是特征向量,b 是偏置项。SVM的...

    svm测试.rar_boardrh2_svm matlab code_svmclassify_svmtrain

    它接受训练数据和相应的类别标签作为输入,输出一个模型,该模型可以用来对新的数据进行分类或回归。训练过程中,SVM寻找最优超平面,最大化类别间的间隔,同时最小化误分类。 3. **svmclassify函数**: `...

    SVM matlab实现.rar_SVMmatlab程序_SVM非线性_matlab svm_matlab决策边界

    支持向量机(Support Vector Machine,SVM)是一种广泛应用的监督学习模型,尤其在分类和回归问题中表现出色。...通过学习和实践这个例子,你可以深入掌握SVM的内在机制,并能灵活地运用到其他机器学习项目中。

    基于SVM的图像分割-真彩色图像分割,基于svm的图像分类,matlab源码.zip

    综上所述,这个压缩包中的MATLAB源码提供了一个实际应用SVM进行真彩色图像分割和分类的例子,涵盖了从数据预处理到模型训练和测试的全过程。通过研究这些源码,读者可以掌握如何在实际项目中运用SVM解决图像处理问题...

    支持向量机(SVM)分类器的Python实现

    例如,我们可以通过`load_iris`函数加载鸢尾花数据集,这是一个经典多类分类问题的例子。然后,我们可以创建SVM分类器对象,如`SVC`(Support Vector Classification),并用训练数据拟合模型: ```python from ...

    SVM(支持向量机)鸢尾花分类.rar

    在本示例中,“SVM(支持向量机)鸢尾花分类.rar”是一个压缩包文件,其中包含了使用SVM进行鸢尾花数据集分类的代码或教程。鸢尾花数据集是机器学习领域经典的数据集,包含三种不同鸢尾花品种的多个特征,如花萼长度...

    一个支持向量机的的例子,包含详细注释和说明,python语言

    总的来说,这个例子旨在帮助初学者掌握如何在Python中运用SVM解决实际问题。通过实践这个示例,你可以深入理解SVM的原理,学习如何预处理数据,如何构建和调整SVM模型,以及如何评估模型的性能。这将为你的机器学习...

    支持向量机的 Matlab 命令及应用例子

    以下是一个简单的 SVM 分类例子: ```matlab % 加载数据集 load iris; % 例如使用鸢尾花数据集 X = meas; Y = species; % 将类别标签转换为离散数值 Y = categorical(Y); % 划分训练集和测试集 cv = cvpartition...

    风电功率预测matpower代码

    一般情况下,我们会根据历史风速数据,运用统计学方法(如时间序列分析、回归分析、支持向量机等)建立风速到功率的转换模型。然后,结合气象预报,预测未来的风速,最后将预测的风速输入到模型中,得到风电功率预测...

    PSO.rar_PSO_PSO-SVM_PSO求最优解_粒子群求最优

    粒子群优化算法(Particle Swarm Optimization,PSO)是一种基于群体智能的...通过这个压缩包,你可以学习如何运用PSO算法解决优化问题,特别是结合SVM进行参数优化,加深对群体智能优化方法的理解,并实践代码实现。

    SVM神经网络的回归预测分析---上证指数开盘指数预测.docx

    本篇文档将探讨如何运用SVM与神经网络进行上证指数开盘指数的回归预测。 首先,数据预处理是任何预测模型的基础。在本案例中,上证指数的开盘指数、最高值、最低值、收盘指数、交易量和交易额等历史数据被载入,并...

    R语言数据分析实例(分类-回归-特征工程-评估模型性能).zip

    例如,逻辑回归用于处理二元分类问题,通过构建一个预测目标变量为离散值的概率模型。在R中,可以使用`glm()`函数进行逻辑回归的建模与分析。 接下来是回归分析,这是预测连续数值型响应变量的一种方法。简单线性...

    matlab读取libsvm

    在机器学习领域,libsvm(Library for Support Vector Machines)是一个广泛应用的开源库,它提供了支持向量机(SVM)的高效实现。SVM是一种强大的监督学习算法,常用于分类和回归任务。Matlab作为一款强大的数值...

    用进化算法来优化SVM的参数C和Gamma——利用SCOOP库进行分布式加速计算

    总的来说,这个案例提供了一个实用的示例,展示了如何结合进化算法和分布式计算来优化SVM模型的参数,特别是在处理大数据集时,这样的策略能有效地提高模型训练的速度和效率。通过这种方式,我们可以更好地利用计算...

    MATLAB 应用实践.zip

    在本压缩包“MATLAB应用实践.zip”中,我们聚焦于MATLAB编程...同时,这个例子也为我们提供了一个很好的起点,可以进一步探索其他的分类算法或在更复杂的数据集上进行实验,以提升模型性能和理解机器学习的内在机制。

    机器学习基础算法模型实现.zip

    4. **随机森林**:它是集成学习的一个例子,由多个决策树组成,每个树独立训练并投票决定最终结果,以提高预测准确性和防止过拟合。 5. **支持向量机(SVM)**:SVM是一种监督学习模型,通过构造最大边距超平面来...

    python的predict函数.docx

    在这个例子中,我们首先导入了 `svm` 模块,然后创建了一个SVM分类器实例。接着,使用 `fit` 函数对训练数据进行拟合,最后通过 `predict` 函数对测试数据 `X_test` 进行预测,预测结果存储在 `y_pred` 变量中。这样...

Global site tag (gtag.js) - Google Analytics