我有些新手在使用Stack Overflow和C ++,如果代码或问题格式有误,请随意纠正。
我正在尝试使用正常方程式制作线性回归计算器,该方法涉及矩阵转置和向量乘法(以及它们的逆运算)。这个程序应该从一个csv文件中读取信息并将其传递到一个矩阵中进行回归线计算。为了简化工作,我决定使用名为Eigen的库进行矩阵乘法。
我遇到的问题是
这是我目前的进展:
我正在尝试使用正常方程式制作线性回归计算器,该方法涉及矩阵转置和向量乘法(以及它们的逆运算)。这个程序应该从一个csv文件中读取信息并将其传递到一个矩阵中进行回归线计算。为了简化工作,我决定使用名为Eigen的库进行矩阵乘法。
我遇到的问题是
Map
函数只能接受数组而不是std :: vector。这是我目前的进展:
float feature_data[] = { 1, 1, 1, 1, 1, 1,
2, 4.5, 3, 1,4, 5};
float labels[] = { 1, 4, 3, 2, 5, 7 };
//maps the array to a matrix called "feature_data"
MatrixXf mFeatures = Map< Matrix<float, 6, 2> >(feature_data);
MatrixXf mLabels = Map< Matrix<float, 6, 1> >(labels);
//use the toArray function
std::vector<float> test_vector = { 2,1,3 };
float* test_array = toArray(test_vector);
calcLinReg(mFeatures, mLabels);
const int n = 2;
int arr[n];
system("pause");
为了更好的理解,toArray函数是我尝试将向量转换为数组的不成功之举(老实说,它确实可以工作,但它返回一个指针,无法传递到Eigen中的Map函数)。 calcLinReg
的功能就像它听起来的那样:计算线性回归直线参数。
有没有办法将向量转换为数组或在Eigen中将向量转换为矩阵?