@@ -25,42 +25,89 @@ to grow with me as I learn new Machine Learning Algo or anything similar
2525### Example
2626
2727``` c
28+ #define INCLUDE_MAT_CONVERSIONS
2829#include " ds/mat.h"
29- #include " ml/linregress .h"
30- #include " model/serializer .h"
30+ #include " ml/logisticregress .h"
31+ #include " model/metrics .h"
3132#include " model/train_test_split.h"
3233#include " parsers/csv.h"
3334
3435int main (void) {
35- CSV * csv_reader = csv_init(1000, 3, ',');
36- csv_parse(csv_reader, "data/placement.csv");
37-
38- Mat *X = csv_get_mat(csv_reader, (int[]){0}, 1);
39- Mat *Y = csv_get_mat(csv_reader, (int[]){2}, 1);
36+ CSV * csv_reader = csv_init(569, 31, ',');
37+ csv_parse(csv_reader, "data/bcancer.csv");
4038
39+ Mat *X = csv_get_mat_slice(csv_reader, (Slice){1, 31});
40+ Mat *Y = csv_get_mat_slice(csv_reader, (Slice){0, 1});
4141 Mat *X_train, *X_test, *Y_train, *Y_test;
42- train_test_split(X, Y, &X_train, &X_test, &Y_train, &Y_test, 0.3, 100);
4342
44- LinearRegressionModel *model = linregress_init();
45- linregress_fit_mat(model, X_train, Y_train);
46- // model_deserialize(model, LinearRegression, "placement.model");
43+ train_test_split(X, Y, &X_train, &X_test, &Y_train, &Y_test, 0.3, 101);
44+
45+ logregress_set_max_iter(2000);
46+ LogisticRegressionModel *model = logregress_init();
47+ logregress_fit(model, X_train, Y_train);
4748
48- printf("score: %lf\n", linregress_score_mat(model, X_test, Y_test));
49- printf("slope: %lf\n", model->slope);
50- printf("intercept: %lf\n", model->intercept);
51- printf("rvalue: %lf\n", model->rvalue);
49+ Array *preds = logregress_predict_many(model, X_test);
50+ Array *true = mat_get_col_arr(Y_test, 0);
5251
53- model_serialize (model, LinearRegression, "placement.model" );
52+ logregress_print (model);
5453
55- linregress_free(model);
56- mat_free_many(6, X, Y, X_train, X_test, Y_train, Y_test);
54+ printf("confusion matrix: \n");
55+ Mat *conf_mat = model_confusion_matrix(true, preds);
56+ mat_print(conf_mat);
57+
58+ arr_free(true);
59+ arr_free(preds);
60+ logregress_free(model);
61+ mat_free_many(7, X, Y, X_test, X_train, Y_test, Y_train, conf_mat);
5762 csv_free(csv_reader);
5863}
5964```
6065
61- The dataset used can be found [here](https://www.kaggle.com/datasets/mayurdalvi/simple-linear-regression-placement-data)
62- This dataset should no be trained on a Linear Regression Model. As of writing this README,
63- Logistic Regression is not yet implemented so we are stuck with this.
66+ <details>
67+ <summary>Output</summary>
68+
69+ ```console
70+ LogisticRegressionModel(bias: 0.5159147, loss: -12.4263621, weights: 0x5556e8a732c0)
71+ weights:
72+ 1546.6922009
73+ 1139.6829595
74+ 8552.1648900
75+ 2522.0044946
76+ 11.8724211
77+ -19.3345598
78+ -44.9646156
79+ -18.4984994
80+ 23.8378678
81+ 10.1676564
82+ 0.2338315
83+ 103.3839701
84+ -139.7864354
85+ -4498.8563443
86+ 0.2662770
87+ -6.5798244
88+ -8.6158697
89+ -1.6938180
90+ 1.6508702
91+ -0.3857419
92+ 1650.7843571
93+ 1445.0283208
94+ 8312.7672485
95+ -4024.9280673
96+ 13.2972726
97+ -72.4527931
98+ -111.8298475
99+ -26.6204266
100+ 28.0612275
101+ 5.4099162
102+ confusion matrix:
103+ 57.00 10.00
104+ 2.00 101.00
105+
106+ ```
107+
108+ </details >
109+
110+ The dataset used can be found [ here] ( https://gitlab.com/adwaithrajesh/linear-ml-test/-/blob/main/data/bcancer.csv?ref_type=heads ) . which is a modified version of [ this] ( https://www.kaggle.com/datasets/uciml/breast-cancer-wisconsin-data ) dataset
64111
65112### Docs
66113
0 commit comments