資源簡介
一個用VC++實現的支持向量機svm分類算法源代碼,直接用VC++可以執行

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?“svm.h“
char*?line;
int?max_line_len?=?1024;
struct?svm_node?*x;
int?max_nr_attr?=?64;
struct?svm_model*?model;
char*?readline(FILE?*input)
{
int?len;
if(fgets(linemax_line_leninput)?==?NULL)
return?NULL;
while(strrchr(line‘\n‘)?==?NULL)
{
max_line_len?*=?2;
line?=?(char?*)?realloc(line?max_line_len);
len?=?strlen(line);
if(fgets(line+lenmax_line_len-leninput)?==?NULL)
break;
}
return?line;
}
void?predict(FILE?*input?FILE?*output)
{
int?correct?=?0;
int?total?=?0;
double?error?=?0;
double?sumv?=?0?sumy?=?0?sumvv?=?0?sumyy?=?0?sumvy?=?0;
#define?SKIP_TARGET\
while(isspace(*p))?++p;\
while(!isspace(*p))?++p;
#define?SKIP_ELEMENT\
while(*p!=‘:‘)?++p;\
++p;\
while(isspace(*p))?++p;\
while(*p?&&?!isspace(*p))?++p;
while(readline(input)!=NULL)
{
int?i?=?0;
double?targetv;
const?char?*p?=?line;
if(sscanf(p“%lf“&target)!=1)?break;
SKIP_TARGET
while(sscanf(p“%d:%lf“&x[i].index&x[i].value)==2)
{
SKIP_ELEMENT;
++i;
if(i>=max_nr_attr-1) //?need?one?more?for?index?=?-1
{
max_nr_attr?*=?2;
x?=?(struct?svm_node?*)?realloc(xmax_nr_attr*sizeof(struct?svm_node));
}
}
x[i].index?=?-1;
v?=?svm_predict(modelx);
if(v?==?target)
++correct;
error?+=?(v-target)*(v-target);
sumv?+=?v;
sumy?+=?target;
sumvv?+=?v*v;
sumyy?+=?target*target;
sumvy?+=?v*target;
++total;
fprintf(output“%g\n“v);
}
printf(“Accuracy?=?%g%%?(%d/%d)?(classification)\n“
(double)correct/total*100correcttotal);
printf(“Mean?squared?error?=?%g?(regression)\n“error/total);
printf(“Squared?correlation?coefficient?=?%g?(regression)\n“
((total*sumvy-sumv*sumy)*(total*sumvy-sumv*sumy))/
((total*sumvv-sumv*sumv)*(total*sumyy-sumy*sumy))
);
}
int?main(int?argc?char?**argv)
{
FILE?*input?*output;
if(argc!=4)
{
fprintf(stderr“usage:?svm-predict?test_file?model_file?output_file\n“);
exit(1);
}
input?=?fopen(argv[1]“r“);
if(input?==?NULL)
{
fprintf(stderr“can‘t?open?input?file?%s\n“argv[1]);
exit(1);
}
output?=?fopen(argv[3]“w“);
if(output?==?NULL)
{
fprintf(stderr“can‘t?open?output?file?%s\n“argv[3]);
exit(1);
}
if((model=svm_load_model(argv[2]))==0)
{
fprintf(stderr“can‘t?open?model?file?%s\n“argv[2]);
exit(1);
}
line?=?(char?*)?malloc(max_line_len*sizeof(char));
x?=?(struct?svm_node?*)?malloc(max_nr_attr*sizeof(struct?svm_node));
predict(inputoutput);
svm_destroy_model(model);
free(line);
free(x);
fclose(input);
fclose(output);
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1498??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\COPYRIGHT
?????文件??????27670??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\heart_scale
?????文件??????39603??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\java\libsvm\svm.java
?????文件??????39157??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\java\libsvm\svm.m4
?????文件????????554??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\java\libsvm\svm_model.java
?????文件?????????83??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\java\libsvm\svm_node.java
?????文件???????1020??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\java\libsvm\svm_parameter.java
?????文件????????104??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\java\libsvm\svm_problem.java
?????文件???????2586??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\java\libsvm\WS_FTP.LOG
?????文件??????35963??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\java\libsvm.jar
?????文件????????567??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\java\Makefile
?????文件???????1924??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\java\svm_predict.java
?????文件??????10850??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\java\svm_toy.java
?????文件???????7982??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\java\svm_train.java
?????文件?????????82??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\java\test_ap
?????文件???????2422??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\java\WS_FTP.LOG
?????文件????????419??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\Makefile
?????文件??????12089??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\README
?????文件???????2744??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\svm-predict.c
?????文件???????4721??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\svm-scale.c
?????文件???????9902??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\svm-toy\gtk\callbacks.cpp
?????文件???????1819??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\svm-toy\gtk\callbacks.h
?????文件???????6621??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\svm-toy\gtk\interface.c
?????文件????????217??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\svm-toy\gtk\interface.h
?????文件????????421??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\svm-toy\gtk\main.c
?????文件????????519??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\svm-toy\gtk\Makefile
?????文件???????6402??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\svm-toy\gtk\svm-toy.glade
?????文件???????2959??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\svm-toy\gtk\WS_FTP.LOG
?????文件????????423??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\svm-toy\qt\Makefile
?????文件??????10070??2001-01-12?02:05??svm算法源代碼\libsvm-2.32\svm-toy\qt\svm-toy.cpp
............此處省略51個文件信息
- 上一篇:QT代碼
- 下一篇:opencv視覺定位,C++編寫的
評論
共有 條評論