资源简介
一个用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++编写的
相关资源
- Qt画图工具源码(qgraphics draw)
- qt 串口助手源码
- modbus 主机源码
- 《LINUX C编程从初学到精通》光盘源码
- OLED驱动源码
- tm1650+stm32f103源码(board_tm1650.c)
- cheat engine 7.2源码
- CrySearch内存搜索器源码
- FTP客户端源码(c++)
- MFC视频播放器源码(支持avi/wma/mp3等格
- CreatBitmap图片合成源码
- vs2008 can总线通讯源码
- 宠物管理系统课程设计(源码+数据库
- Windows扩展命令程序(源码)
- c语言实现火车订票系统(控制台)源
- 鼠标连点器(附源码)
- c++ 简易贪吃蛇源码
- 杀毒软件源码
- 经典外汇智能交易程序Amazing3.1源码(
- 微型文件系统源码(FatFs)
- 海康私有流分析接口源码(附使用说
- VC6 USB开发源码
- SVM算法实现(源码+文档)
- 俄罗斯方块游戏源码(Tetris)
- 步进电机控制(源码+文档)
- c++ 定时关机程序源码
- c++ 账务系统源码
- c语言课程设计:客房登记系统源码
- 贪吃蛇大作战(c源码+报告文档)
- 学生成绩管理系统(c源码)
评论
共有 条评论