首页 > IT职业 > IT生活 > 感知机对偶形式C++实现




下面直接上代码,此处我用的是C++代码用STL中的向量实现存储,当然也可以用数组或者其他方式,感知机的对偶形式代码如下:
#include#include #include #include #include using namespace std; void input_init(); void train(); bool judge(int i); void output(); void gram(); void output_Gram(); void fun_output(); ///****α、b、步长和训练集和Gram矩阵******** vector Gram[1000]; vector data[1000]; vector a; vector w; int b=0; int len=1; ///步长 ///****α、b、步长和训练集和Gram矩阵******** int n; //特征向量的维数 int N; //输入实例的个数 int k=0; //迭代次数 int main() { freopen("in.txt","r",stdin); input_init(); train(); fun_output(); system("pause"); return 0; } void input_init(){ cout>n; cout>N; int tmp; for(int i=0;i >tmp; data[i].push_back(tmp); } a.push_back(0); ///α表示第i个训练数据被误分类的次数 } gram(); output_Gram(); cout0)? true:false; //yi(w.xi+b)0){ if(i!=0) cout=0) cout 此处我输入的文件
in.txt内容如下:
运行结果如下:
以上核心代码其实只有judge()、train()和gram(),去掉冗余输入输出后如下:bool judge(int i){ int sum = 0; for(int j=0;j0)? true:false; //yi(w.xi+b) void train(){ for(int i=0;ivoid gram(){ for(int i=0;i
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2687/viewspace-2800812/ ,如需转载,请注明出处,否则将追究法律责任。