教程
https://github.com/mlpack/mlpack
github中的readme提供了各种模型的使用方法
mlpack 是在cpp中使用机器学习
通常有两种使用方式,在命令行中执行可执行文件 or 在代码中使用mlpack的api
代码
在本教程中将使用代码的方式实现时序预测
# 说明
mlpack初始化逻辑回归模型时,就可以输入训练数据,默认初始化完成,即训练完成。
LinearRegression lr_x=LinearRegression(训练数据的特征,训练数据的标签);
训练数据的特征 要求格式为 arma::mat
训练数据的标签 要求格式为 arma::rowvec
训练数据要求的arma::mat 与python中的输入矩阵不同,mlpack默认arma::mat其一列属于一次的输入数据
也就是比如double[] a={1,2,3,4,5,6,7,8,9,10,11,12}
我们希望1,2,3,4是第一组数据的输入
5,6,7,8是第二组数据的输入
9,10,11,12 是第三组数据的输入
那么mat需要这样初始化
mat data(a,4,3) 会初始化为以下的矩阵
1 5 9
2 6 10
3 7 11
4 8 12
训练数据的标签 要求格式为 arma::rowvec,例如
double[] b={1,2,3} 为以上三次输入的标签
rowvec res(b,3)
预测与训练时输入的格式一样
# 头文件
#include<mlpack.hpp>
using namespace arma;
using namespace mlpack;
# 训练
vector<double> xs_in={超多数据};
vector<double> xs_out={超多数据/4};
double* xs_arr_in= &xs_in[0];
double* xs_arr_out= &xs_out[0];
mat data_x(xs_arr_in,4,num); // The dataset itself.
rowvec responses_x(xs_arr_out,num); // The responses, one row for each row in data.
lr_x_=LinearRegression(data_x, responses_x);
# 预测
vector<double> predict_vec_x={1,2,3,4};
double* predict_in_x =&predict_vec_x[0];
mat data2_x(predict_in_x,4,1);
rowvec prediction_x(1);
lr_x_.Predict(data2_x,prediction_x);
cout<<prediction_x[0]<<endl;