#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 &#
svm代码c++——机器学习
最新推荐文章于 2024-05-16 10:58:44 发布
这是一个使用C++实现的支持向量机(SVM)的代码示例,包括数据读取、核函数计算、SMO算法优化及结果输出。通过SMO算法调整阿尔法值和边界b,最终进行分类预测。
摘要由CSDN通过智能技术生成