{"id":34936421,"url":"https://github.com/jman-9/linear-regression-practice","last_synced_at":"2026-05-23T10:36:53.912Z","repository":{"id":290495436,"uuid":"332285045","full_name":"jman-9/linear-regression-practice","owner":"jman-9","description":"Practice of Linear Regression","archived":false,"fork":false,"pushed_at":"2021-03-07T12:43:07.000Z","size":292,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-28T04:50:30.555Z","etag":null,"topics":["holdout","linear-equations","linear-regression","linear-system","platform-independent","ridge-regression","system-of-linear-equations"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jman-9.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-01-23T18:52:57.000Z","updated_at":"2024-01-01T19:34:11.000Z","dependencies_parsed_at":"2025-04-29T05:35:16.354Z","dependency_job_id":"05bb9e8b-8ed9-405e-a799-039a9a81abf7","html_url":"https://github.com/jman-9/linear-regression-practice","commit_stats":null,"previous_names":["jman-9/linear-regression-practice"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jman-9/linear-regression-practice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jman-9%2Flinear-regression-practice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jman-9%2Flinear-regression-practice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jman-9%2Flinear-regression-practice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jman-9%2Flinear-regression-practice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jman-9","download_url":"https://codeload.github.com/jman-9/linear-regression-practice/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jman-9%2Flinear-regression-practice/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33392714,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T04:15:53.637Z","status":"ssl_error","status_checked_at":"2026-05-23T04:15:53.242Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["holdout","linear-equations","linear-regression","linear-system","platform-independent","ridge-regression","system-of-linear-equations"],"created_at":"2025-12-26T18:11:15.765Z","updated_at":"2026-05-23T10:36:53.891Z","avatar_url":"https://github.com/jman-9.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Practice of Linear Regression\n\n\n# Objectives\n- implementing a solution of linear regression problem for C++\n- platform independent\n- reusable\n\n# Needs\n- ~~partial derivative~~\n- ~~system of linear equations~~\n- ~~linear least squares method~~\n- ~~regularization~~\n- ~~cross-validation - holdout method~~\n  \n# Achieved\n- system of linear equations\n- linear least squares method\n- ridge regression\n- cross-validation\n- platform independent source codes (but nowhere any meta-build recipes, only included Visual Studio 2019 projects)\n- reusable modules (maybe not used...)\n  \n# Usage of linear_system\n## Code\n```C++\nlinear_system ls;\n\nlinear_system::equation eq1{2, 3, 2};\nlinear_system::equation eq2{5, 4, 1};\nlinear_system::solution sol = ls.solve(eq1, eq2);\nprintf(\"---------\\n\");\nprintf(\"problem :\\n\");\nprintf(\"%dx + %dy + %d = 0\\n\", 2, 3, 2);\nprintf(\"%dx + %dy + %d = 0\\n\", 5, 4, 1);\nprintf(\"solution :\\n\");\nprintf(\"x=%d/%d, y=%d/%d\\n\", sol.x.num, sol.x.den, sol.y.num, sol.y.den );\nprintf(\"---------\\n\");\n\nequation_matrix mat(2, 3);\nmat[0][0] = 2;\nmat[0][1] = 3;\nmat[0][2] = 2;\nmat[1][0] = 5;\nmat[1][1] = 4;\nmat[1][2] = 1;\nlinear_system::solution_vector s1 = ls.solve(mat);\nprintf(\"---------\\n\");\nprintf(\"problem :\\n\");\nfor(size_t i=0; i\u003cmat.varcnt(); i++)\n\tprintf(\"%dx + %dy + %d = 0\\n\", (int)mat[i][0], (int)mat[i][1], (int)mat[i][2]);\nprintf(\"solution :\\n\");\nprintf(\"x=%.6lf, y=%.6lf\\n\", s1[0], s1[1]);\nprintf(\"---------\\n\");\n\nmat.resize(3, 4);\nmat[0][0] = 1;\nmat[0][1] = 1;\nmat[0][2] = 1;\nmat[0][3] = 1;\nmat[1][0] = 1;\nmat[1][1] = 2;\nmat[1][2] = 3;\nmat[1][3] = 4;\nmat[2][0] = 2;\nmat[2][1] = 1;\nmat[2][2] = 2;\nmat[2][3] = 3;\nlinear_system::solution_vector s2 = ls.solve(mat);\nprintf(\"---------\\n\");\nprintf(\"problem :\\n\");\nfor(size_t i=0; i\u003cmat.varcnt(); i++)\n\tprintf(\"%dx + %dy + %dz + %d = 0\\n\", (int)mat[i][0], (int)mat[i][1], (int)mat[i][2], (int)mat[i][3]);\nprintf(\"solution :\\n\");\nprintf(\"x=%.6lf, y=%.6lf z=%.6lf\\n\", s2[0], s2[1], s2[2]);\nprintf(\"---------\\n\");\n```\n## Result\n```\n---------\nproblem :\n2x + 3y + 2 = 0\n5x + 4y + 1 = 0\nsolution :\nx=-5/-7, y=-8/7\n---------\n---------\nproblem :\n2x + 3y + 2 = 0\n5x + 4y + 1 = 0\nsolution :\nx=0.714286, y=-1.142857\n---------\n---------\nproblem :\n1x + 1y + 1z + 1 = 0\n1x + 2y + 3z + 4 = 0\n2x + 1y + 2z + 3 = 0\nsolution :\nx=0.000000, y=1.000000 z=-2.000000\n---------\n```\n  \n  \n# Usage of linear_least_squares\n## Code\n```C++\nlinear_least_squares ls;\nlinear_least_squares::residual_list rl(4);\nrl[0] = { .y = 8.7, .x { 0.5 } };\nrl[1] = { .y = 7.5, .x { 0.8 } };\nrl[2] = { .y = 7.1, .x { 1.1 } };\nrl[3] = { .y = 6.8, .x { 1.5 } };\nlinear_least_squares::parameter_vector pv = ls.solve(rl);\n\nprintf(\"---------\\n\");\nprintf(\"residuals :\\n\");\nfor(size_t i=0; i\u003crl.size(); i++)\n{\n\tprintf(\"no.%2u - y:%lf\", (int)i+1, rl[i].y);\n\tfor(size_t j=0; j\u003crl[i].x.size(); j++)\n\t\tprintf(\", x%u:%lf\", (int)j+1, rl[i].x[j]);\n\tprintf(\"\\n\");\n}\nprintf(\"parameters :\\n\");\nfor(size_t i=0; i\u003cpv.size(); i++)\n{\n\tprintf(\"w%u:%lf\", (int)i, pv[pv.size() - i - 1]);\n\tif(i+1 \u003e= pv.size()) break;\n\tprintf(\", \");\n}\nprintf(\"\\n\");\nprintf(\"---------\\n\");\n```\n## Result\n```\n---------\nresiduals :\nno. 1 - y:8.700000, x1:0.500000\nno. 2 - y:7.500000, x1:0.800000\nno. 3 - y:7.100000, x1:1.100000\nno. 4 - y:6.800000, x1:1.500000\nparameters :\nw0:9.283562, w1:-1.803653\n---------\n```\n  \n  \n# Usage of ridge_regression\n## Code\n```C++\nridge_regression rr;\nlinear_least_squares::residual_list bhd;\nlinear_least_squares::parameter_vector pv;\n\nCSVReader reader(\"../data/BostonHousing.csv\");\nfor (CSVRow\u0026 row: reader)\n{\n\tbhd.push_back({});\n\tbhd.back().y = row[\"medv\"].get\u003cdouble\u003e();\n\n\tfor(size_t i=0; i\u003crow.size()-1; i++)\n\t{\n\t\tbhd.back().x.push_back(row[i].get\u003cdouble\u003e());\n\t}\n}\n\nauto colnames = reader.get_col_names();\ncolnames.back() = \"bias\";\n\nprintf(\"=========\\n\");\nprintf(\"solving Boston Housing Dataset\\n\");\n\npv = rr.solve(bhd, 0.0);\nprintf(\"---------\\n\");\nprintf(\"parameters (not regularized) :\\n\");\nprintf(\"%s:%lf\", colnames[0].c_str(), pv[0]);\nfor(size_t i=1; i\u003cpv.size(); i++)\n\tprintf(\", %s:%lf\", colnames[i].c_str(), pv[i]);\nprintf(\"\\n\");\n\npv = rr.solve(bhd, 1.0);\nprintf(\"---------\\n\");\nprintf(\"parameters (regularized) :\\n\");\nprintf(\"%s:%lf\", colnames[0].c_str(), pv[0]);\nfor(size_t i=1; i\u003cpv.size(); i++)\n\tprintf(\", %s:%lf\", colnames[i].c_str(), pv[i]);\nprintf(\"\\n\");\nprintf(\"=========\\n\");\n```\n## Result\n```\n=========\nsolving Boston Housing Dataset\n---------\nparameters (not regularized) :\ncrim:-0.108011, zn:0.046420, indus:0.020559, chas:2.686734, nox:-17.766611, rm:3.809865, age:0.000692, dis:-1.475567, rad:0.306049, tax:-0.012335, ptratio:-0.952747, b:0.009312, lstat:-0.524758, bias:36.459488\n---------\nparameters (regularized) :\ncrim:-0.104595, zn:0.047443, indus:-0.008805, chas:2.552393, nox:-10.777015, rm:3.854000, age:-0.005415, dis:-1.372654, rad:0.290142, tax:-0.012912, ptratio:-0.876074, b:0.009673, lstat:-0.533343, bias:31.597670\n=========\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjman-9%2Flinear-regression-practice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjman-9%2Flinear-regression-practice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjman-9%2Flinear-regression-practice/lists"}