#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
分享到:
相关推荐
例如,以下是一个基本的MATLAB代码片段,展示了如何使用SVM进行回归训练和预测: ```matlab % 加载上证指数数据 load shanghaiStockData.mat % 分割数据集为训练集和测试集 trainData = shanghaiStockData(1:800,:...
通过深入理解和使用这个SVM Matlab工具脚本,不仅可以掌握SVM的基本概念,还能掌握如何在实际问题中运用SVM,以及如何通过调参来优化模型性能。这对于从事机器学习研究或应用的人员来说是非常有价值的。
训练完成后,SVM模型会得到一个决策函数,用于对新数据进行分类。在这个程序中,"svm predict"部分就是实现预测功能,它接收新的样本点,应用决策函数,得出该点所属的类别。 在VC6.0环境下,我们需要注意编译环境...
SVM模型的核心思想是找到一个超平面,将不同类别的数据分隔开来,并且使得这个超平面到不同类别数据的距离最大化,即最大化分类间隔。数学表达式为 wTx+b=0,其中 w 是权重向量,x 是特征向量,b 是偏置项。SVM的...
它接受训练数据和相应的类别标签作为输入,输出一个模型,该模型可以用来对新的数据进行分类或回归。训练过程中,SVM寻找最优超平面,最大化类别间的间隔,同时最小化误分类。 3. **svmclassify函数**: `...
支持向量机(Support Vector Machine,SVM)是一种广泛应用的监督学习模型,尤其在分类和回归问题中表现出色。...通过学习和实践这个例子,你可以深入掌握SVM的内在机制,并能灵活地运用到其他机器学习项目中。
综上所述,这个压缩包中的MATLAB源码提供了一个实际应用SVM进行真彩色图像分割和分类的例子,涵盖了从数据预处理到模型训练和测试的全过程。通过研究这些源码,读者可以掌握如何在实际项目中运用SVM解决图像处理问题...
例如,我们可以通过`load_iris`函数加载鸢尾花数据集,这是一个经典多类分类问题的例子。然后,我们可以创建SVM分类器对象,如`SVC`(Support Vector Classification),并用训练数据拟合模型: ```python from ...
在本示例中,“SVM(支持向量机)鸢尾花分类.rar”是一个压缩包文件,其中包含了使用SVM进行鸢尾花数据集分类的代码或教程。鸢尾花数据集是机器学习领域经典的数据集,包含三种不同鸢尾花品种的多个特征,如花萼长度...
总的来说,这个例子旨在帮助初学者掌握如何在Python中运用SVM解决实际问题。通过实践这个示例,你可以深入理解SVM的原理,学习如何预处理数据,如何构建和调整SVM模型,以及如何评估模型的性能。这将为你的机器学习...
以下是一个简单的 SVM 分类例子: ```matlab % 加载数据集 load iris; % 例如使用鸢尾花数据集 X = meas; Y = species; % 将类别标签转换为离散数值 Y = categorical(Y); % 划分训练集和测试集 cv = cvpartition...
一般情况下,我们会根据历史风速数据,运用统计学方法(如时间序列分析、回归分析、支持向量机等)建立风速到功率的转换模型。然后,结合气象预报,预测未来的风速,最后将预测的风速输入到模型中,得到风电功率预测...
粒子群优化算法(Particle Swarm Optimization,PSO)是一种基于群体智能的...通过这个压缩包,你可以学习如何运用PSO算法解决优化问题,特别是结合SVM进行参数优化,加深对群体智能优化方法的理解,并实践代码实现。
本篇文档将探讨如何运用SVM与神经网络进行上证指数开盘指数的回归预测。 首先,数据预处理是任何预测模型的基础。在本案例中,上证指数的开盘指数、最高值、最低值、收盘指数、交易量和交易额等历史数据被载入,并...
例如,逻辑回归用于处理二元分类问题,通过构建一个预测目标变量为离散值的概率模型。在R中,可以使用`glm()`函数进行逻辑回归的建模与分析。 接下来是回归分析,这是预测连续数值型响应变量的一种方法。简单线性...
在机器学习领域,libsvm(Library for Support Vector Machines)是一个广泛应用的开源库,它提供了支持向量机(SVM)的高效实现。SVM是一种强大的监督学习算法,常用于分类和回归任务。Matlab作为一款强大的数值...
总的来说,这个案例提供了一个实用的示例,展示了如何结合进化算法和分布式计算来优化SVM模型的参数,特别是在处理大数据集时,这样的策略能有效地提高模型训练的速度和效率。通过这种方式,我们可以更好地利用计算...
在本压缩包“MATLAB应用实践.zip”中,我们聚焦于MATLAB编程...同时,这个例子也为我们提供了一个很好的起点,可以进一步探索其他的分类算法或在更复杂的数据集上进行实验,以提升模型性能和理解机器学习的内在机制。
4. **随机森林**:它是集成学习的一个例子,由多个决策树组成,每个树独立训练并投票决定最终结果,以提高预测准确性和防止过拟合。 5. **支持向量机(SVM)**:SVM是一种监督学习模型,通过构造最大边距超平面来...
在这个例子中,我们首先导入了 `svm` 模块,然后创建了一个SVM分类器实例。接着,使用 `fit` 函数对训练数据进行拟合,最后通过 `predict` 函数对测试数据 `X_test` 进行预测,预测结果存储在 `y_pred` 变量中。这样...