2
2
package com .thealgorithms .machinelearning ;
3
3
4
4
import java .util .ArrayList ;
5
+ import java .util .List ;
5
6
6
7
/**
7
8
* Author : Gowtham Kamalasekar
15
16
*/
16
17
17
18
class LinearRegression {
18
- private ArrayList <Double > dependentX = new ArrayList <Double >();
19
- private ArrayList <Double > independentY = new ArrayList <Double >();
20
- private double m ;
21
- private double c ;
19
+ private List <Double > dependentX = new ArrayList <Double >();
20
+ private List <Double > independentY = new ArrayList <Double >();
21
+ private double m ;
22
+ private double c ;
22
23
23
24
/**
24
25
* @param : X (dependent variable), Y (independent variable) as ArrayList
25
26
*/
26
- LinearRegression (ArrayList <Double > dependentX ,
27
- ArrayList <Double > independentY ) {
27
+ LinearRegression (List <Double > dependentX , List <Double > independentY ) {
28
28
this .dependentX = dependentX ;
29
29
this .independentY = independentY ;
30
30
this .equate ();
31
31
}
32
32
33
- private double sumation (ArrayList <Double > arr ) {
33
+ private double sumation (List <Double > arr ) {
34
34
double sum = 0.0 ;
35
35
36
36
for (int i = 0 ; i < arr .size (); i ++) {
@@ -40,9 +40,8 @@ private double sumation(ArrayList<Double> arr) {
40
40
return sum ;
41
41
}
42
42
43
- private ArrayList <Double > multiplyNumber (ArrayList <Double > arr1 ,
44
- ArrayList <Double > arr2 ) {
45
- ArrayList <Double > temp = new ArrayList <Double >();
43
+ private List <Double > multiplyNumber (List <Double > arr1 , List <Double > arr2 ) {
44
+ List <Double > temp = new ArrayList <Double >();
46
45
for (int i = 0 ; i < arr1 .size (); i ++) {
47
46
temp .add ((arr1 .get (i ) * arr2 .get (i )));
48
47
}
@@ -51,22 +50,22 @@ private ArrayList<Double> multiplyNumber(ArrayList<Double> arr1,
51
50
52
51
private void equate () {
53
52
int n = dependentX .size ();
54
- this .m = (n * sumation (multiplyNumber (independentY , dependentX ))
55
- - (sumation (dependentX ) * sumation (independentY )));
56
- this .m = this .m / (n * (sumation (multiplyNumber (dependentX , dependentX )))
57
- - (sumation (dependentX ) * sumation (dependentX )));
53
+ this .m = (n * sumation (multiplyNumber (independentY , dependentX )) - (sumation (dependentX ) * sumation (independentY )));
54
+ this .m = this .m / (n * (sumation (multiplyNumber (dependentX , dependentX ))) - (sumation (dependentX ) * sumation (dependentX )));
58
55
59
- this .c = (sumation (independentY )
60
- * sumation (multiplyNumber (dependentX , dependentX ))
61
- - (sumation (dependentX )
62
- * sumation (multiplyNumber (independentY , dependentX ))));
63
- this .c = this .c / (n * (sumation (multiplyNumber (dependentX , dependentX )))
64
- - (sumation (dependentX ) * sumation (dependentX )));
56
+ this .c = (sumation (independentY ) * sumation (multiplyNumber (dependentX , dependentX )) - (sumation (dependentX ) * sumation (multiplyNumber (independentY , dependentX ))));
57
+ this .c = this .c / (n * (sumation (multiplyNumber (dependentX , dependentX ))) - (sumation (dependentX ) * sumation (dependentX )));
65
58
}
66
59
67
- public double getM () { return this .m ; }
60
+ public double getM () {
61
+ return this .m ;
62
+ }
68
63
69
- public double getC () { return this .c ; }
64
+ public double getC () {
65
+ return this .c ;
66
+ }
70
67
71
- public double predictForX (double x ) { return (this .m * x ) + this .c ; }
68
+ public double predictForX (double x ) {
69
+ return (this .m * x ) + this .c ;
70
+ }
72
71
}
0 commit comments