svm代码c++——机器学习

这是一个使用C++实现的支持向量机(SVM)的代码示例,包括数据读取、核函数计算、SMO算法优化及结果输出。通过SMO算法调整阿尔法值和边界b,最终进行分类预测。
摘要由CSDN通过智能技术生成
#include<stdio.h>
#include<iostream>
#include<math.h>
#include<ostream>

using namespace std;
///线性
//parameter list
#define tol 0.001
#define tolJ 0.00001
#define maxcirl 50
#define max 10000
#define dem 2
#define C 0.6
#define file_drec "E:/vs_workplace/SVM/testSet.txt"
#define result_dec "E:/vs_workplace/SVM/result_alpha_b_5.txt"
#define result_classify  "E:/vs_workplace/SVM/result_classify_5.txt"
#define ifKernel  1
#define d 0.2
 
struct elemeter
{   
	double Error[max][2];
	double alpha[max];
	double b;
	double X[max][dem];
    double Y[max];
	int length;
	int x_dem;
}Elemter;
double getE(int i);
void UpdataEk(int k)
{
	double Ek = getE(k);
	Elemter.Error[k][0] = 1;
	Elemter.Error[k][1] = Ek;
}
double dot_product(int length,double x1[],double x2[])
{
	double result = 0;
	if(!ifKernel)
	{
	    for(int i = 0;i<length;i++)
		   result += x1[i]*x2[i];
	}
	else
	{
		for(int i = 0;i<length;i++)
			result += (x1[i] - x2[i]) * (x1[i] - x2[i]);
		result = exp(-result / (2 * d * d));
	}
	return result;
}
double getE(int i)
{
	int length = Elemter.length;
	int x_dem = Elemter.x_dem;
	double re = 0;
	for(int k = 0;k<length;k++)
	{
		re += Elemter.Y[k] * Elemter.alpha[k] * dot_product(x_dem,Elemter.X[i],Elemter.X[k]);
	}
	re = re &#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值