线性回归
把酒祝东风,且共从容。垂杨紫陌洛城东。总是当时携手处,游遍芳丛。
聚散苦匆匆,此恨无穷。今年花胜去年红。可惜明年花更好,知与谁同?
欧阳修 《浪淘沙》
笔记地址:机器学习-白板推导系列(三)-线性回归(Linear Regression) 笔记 - 知乎 (zhihu.com)
视频地址:机器学习-白板推导系列(三)-线性回归
目录
- 线性回归
- 局部加权线性回归
- 岭回归和逐步线性回归
Y = W*X + 1*b
W = (XTX)-1XTY
1 #include <iostream> 2 #include <fstream> 3 #include <Eigen/Dense> 4 #include <string> 5 #include "StringUntils.h" 6 7 using namespace std; 8 using namespace Eigen; 9 10 int main() 11 { 12 string s; 13 string filename; 14 filename = "E:/shujuji/ML/LSE/abalone.txt"; 15 fstream file(filename); 16 17 int lines=0; 18 19 getline(file, s); 20 vector<string> l = vsplit(s, " "); 21 int cols = l.size(); 22 23 file.clear(); 24 file.seekg(0, ios::beg); 25 26 while (!file.eof()) 27 { 28 getline(file, s); 29 lines++; 30 } 31 32 MatrixXd dataM(lines-1,cols-1); 33 MatrixXd labelM(lines-1, 1); 34 35 string tmp[8]; 36 37 vector<string> res; 38 39 file.clear(); 40 file.seekg(0, ios::beg); 41 42 int c = 0; 43 while (!file.eof()) 44 { 45 getline(file, s); 46 res = vsplit(s, " "); 47 48 for (int i = 0; i < res.size(); i++) { 49 50 if (i == res.size() - 1) { 51 labelM(c,0) = stod(res[i]); 52 break; 53 } 54 dataM(c, i) = stod(res[i]); 55 } 56 c++; 57 } 58 59 MatrixXd XX = dataM.transpose() * dataM; 60 MatrixXd XY = dataM.transpose() * labelM; 61 MatrixXd W; 62 63 if (XX.determinant() != 0) { 64 W = XX.inverse() * XY; 65 } 66 67 cout << W << endl; 68 69 return 0; 70 }