wordpress 微站,基于django的电子商务网站开发,自己做网站教学视频,专门做海报的网站libsvm是著名的SVM开源组件#xff0c;目前有JAVA.C/C,.NET 等多个版本#xff0c;本人使用的是2.9libsvm命名空间下主要使用类#xff1a;svm_model 为模型类#xff0c;通过训练或加载训练好的模型文件获得svm_parameter 为参数类#xff0c;主要为支持向量机设定参数目前有JAVA.C/C,.NET 等多个版本本人使用的是2.9libsvm命名空间下主要使用类svm_model 为模型类通过训练或加载训练好的模型文件获得svm_parameter 为参数类主要为支持向量机设定参数具体参数如下 svm_parameter.svm_type svm类型SVM设置类型(默认svm_parameter.C_SVC) svm_parameter.C_SVC -- C-SVC n(n2)分类器允许用异常值惩罚因子C进行不完全分类。 svm_parameter.NU_SVC -- ν-SVC n类似然不完全分类的分类器。参数nu取代了c其值在区间【01】中nu越大决策边界越平滑。 svm_parameter.ONE_CLASS – 一类SVM 单分类器所有的训练数据提取自同一个类里然後SVM建立了一个分界线以分割该类在特征空间中所占区域和其它类在特 征空间中所占区域。 svm_parameter.EPSILON_SVR -- ε -SVR 回归。训练集中的特征向量和拟合出来的超平面的距离需要小于p。异常值惩罚因子C被采用。 svm_parameter.NU_SVR -- ν-SVR 回归nu 代替了p svm_parameter.kernel_type 核函数类型核函数设置类型(svm_parameter.LINEAR) svm_parameter.LINEAR – 线性u×v - 没有任何向映射至高维空间线性区分或回归在原始特征空间中被完成这是最快的选择。 d(x,y) x?y (x,y) svm_parameter.POLY– 多项式(γ×u×v coef0)^degree - 多项式核: d(x,y) (gamma*(x?y)coef0)degree svm_parameter.RBF – RBF函数exp(-γ×|u-v|^2) - 径向基对于大多数情况都是一个较好的选择d(x,y) exp(-gamma*|x-y|2) svm_parameter.SIGMOID – sigmoidtanh(γ×u×v coef0) - sigmoid函数被用作核函数: d(x,y) tanh(gamma*(x?y)coef0) degree, gamma, coef0都是核函数的参数具体的参见上面的核函数的方程。 svm_parameter.degree 核函数中的degree设置(默认3) svm_parameter.coef0 核函数中的coef0设置(默认0) svm_parameter.shrinking 是否使用启发式0或1(默认1) svm_parameter.nu 设置ν-SVC一类SVM和ν- SVR的参数(默认0.5) svm_parameter.C 设置C-SVCε -SVR和ν-SVR的参数(默认1) svm_parameter.cache_size 设置cache内存大小以MB为单位(默认40)svm_problem 相当于训练集合可讲需要训练的数据加入该类传递给训练器svm_node 内部使用的数据结构主要用于保存待训练数据svm 主调用程序中我们一般使用以下几个方法 svm.svm_train(svm_problem,svm_parameter) 该方法返回一个训练好的svm_model svm.svm_load_model(文件名); 该方法返回一个训练好的svm_model svm.svm_save_model(文件名,svm_model); 该方法将svm_model保存到文件中 svm.svm_predict_values(svm_model,svm_node,double); 该方法返回doule类值svm_node对svm_model测试返回值确定了svm_node在模型中的定位 LibSVM库函数的调用 库函数在libsvm包中。 在Java版中以下函数可以调用 public class svm { public static final int LIBSVM_VERSION310; public static svm_model svm_train(svm_problem prob, svm_parameter param); public static void svm_cross_validation(svm_problem prob, svm_parameter param, int nr_fold, double[] target); public static int svm_get_svm_type(svm_model model); public static int svm_get_nr_class(svm_model model); public static void svm_get_labels(svm_model model, int[] label); public static double svm_get_svr_probability(svm_model model); public static double svm_predict_values(svm_model model, svm_node[] x, double[] dec_values); public static double svm_predict(svm_model model, svm_node[] x); public static double svm_predict_probability(svm_model model, svm_node[] x, double[] prob_estimates); public static void svm_save_model(String model_file_name, svm_model model) throws IOException public static svm_model svm_load_model(String model_file_name) throws IOException public static String svm_check_parameter(svm_problem prob, svm_parameter param); public static int svm_check_probability_model(svm_model model); public static void svm_set_print_string_function(svm_print_interface print_func); } 注意在Java版中svm_node[]的最后一个元素的索引不是-1. 用户可以自定义自己的输出格式通过 your_print_func new svm_print_interface() { public void print(String s) { // your own format } }; svm.svm_set_print_string_function(your_print_func); LIBSVM使用的一般步骤是 1 按照LIBSVM软件包所要求的格式准备数据集 2 对数据进行简单的缩放操作 3 考虑选用RBF核函数4 采用交叉验证选择最佳参数C与γ 5 采用最佳参数C与γ对整个训练集进行训练获取支持向量机模型 6 利用获取的模型进行测试与预测。 svm_type c_svc % 训练所采用的svm类型此处为CSVC− kernel_type rbf % 训练采用的核函数类型此处为RBF核 gamma 0.047619 % 与操作参数设置中的γ含义相同 nr_class 2 % 分类时的类别数此处为两分类问题 total_sv 604 % 总共的支持向量个数 rho -0.337784 % 决策函数中的常数项b label 0 1 % 类别标签 nr_sv 314 290 % 各类别标签对应的支持向量个数 SV % 以下为支持向量 1 1:-0.963808 2:0.906788 ... 19:-0.197706 20:-0.928853 21:-1 1 1:-0.885128 2:0.768219 ... 19:-0.452573 20:-0.980591 21:-1 ... ... ... 1 1:-0.847359 2:0.485921 ... 19:-0.541457 20:-0.989077 21:-1 % 对于分类问题上面的支持向量的各列含义与训练数据集相同对于回归问题略有不同与训练数据中的标签label即y值所对应的位置在模型文件的支持向量中现在存放的是Lagrange系数α值 转载于:https://www.cnblogs.com/chengJAVA/p/3997801.html