⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bin2libsvm.cpp

📁 用C语言实现的最新且最快的SVM源码,可用于解决多类分类问题
💻 CPP
字号:
// -*- Mode: c++; c-file-style: "stroustrup"; -*-using namespace std;#include <stdio.h>  #include <iostream>#include <fstream>#include <stdio.h>#include <vector>#include <math.h>#include "vector.h"vector <lasvm_sparsevector_t*> X; // feature vectorsvector <int> Y;                   // labelsint m;                            // number of examplesint sparse=1;int max_index = 0;int binary_load_data(char *filename){    int msz,i=0,j;    lasvm_sparsevector_t* v;    int nonsparse=0;    ifstream f;    f.open(filename,ios::in|ios::binary);        // read number of examples and number of features    int sz[2];     f.read((char*)sz,2*sizeof(int));    if (!f) { printf("File writing error in line %d.\n",i); exit(1);}    msz=sz[0]; max_index=sz[1];    vector <float> val;    vector <int>   ind;    val.resize(max_index);    if(max_index>0) nonsparse=1;        for(i=0;i<msz;i++)     {        v=lasvm_sparsevector_create();         X.push_back(v);        if(nonsparse) // non-sparse binary file        {            f.read((char*)sz,1*sizeof(int)); // get label            Y.push_back(sz[0]);            f.read((char*)(&val[0]),max_index*sizeof(float));            for(j=0;j<max_index;j++) // set features for each example                lasvm_sparsevector_set(v,j,val[j]);        }        else			// sparse binary file        {            f.read((char*)sz,2*sizeof(int)); // get label & sparsity of example i            Y.push_back(sz[0]);            val.resize(sz[1]);             ind.resize(sz[1]);            f.read((char*)(&ind[0]),sz[1]*sizeof(int));            f.read((char*)(&val[0]),sz[1]*sizeof(float));            for(j=0;j<sz[1];j++) // set features for each example            {                if (val[j]!=0)                    lasvm_sparsevector_set(v,ind[j],val[j]);                if(ind[j]>max_index)                    max_index=ind[j];            }        }		    }    f.close();        msz=X.size();    printf("examples: %d   features: %d\n",msz,max_index);        return msz;}void libsvm_save(char *fname){	    FILE *f = fopen(fname,"w");    for(int i=0;i<m;i++)     {        fprintf(f,"%d", (int) Y[i]);        lasvm_sparsevector_pair_t *p = X[i]->pairs;        while (p )        {             if(p->index>max_index)            {                printf("error! index %d??\n",p->index);                 exit(1);            }            fprintf(f," %d:%.15g", p->index, p->data);            p = p->next; 	        }         fprintf(f,"\n");    }    fclose(f);}int main(int argc, char **argv)  {    printf("\n");    printf("bin2libsvm file converter\n");    printf("_________________________\n");        if(argc!=3)    {        printf("usage: %s <input file> <output file>\n",argv[0]);        exit(10);    }        m = binary_load_data(argv[1]);    libsvm_save(argv[2]);    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -