Skip to content
This repository was archived by the owner on Jan 11, 2026. It is now read-only.

Commit a6fb63b

Browse files
Updates README
1 parent b37fdf7 commit a6fb63b

1 file changed

Lines changed: 68 additions & 21 deletions

File tree

README.md

Lines changed: 68 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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

3435
int 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

Comments
 (0)