• 大小: 1MB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2023-10-23
  • 语言: C/C++
  • 标签: SVM  源码  

资源简介

一个用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_applet.html

     文件       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个文件信息

评论

共有 条评论