-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlinear_regression.py
More file actions
74 lines (49 loc) · 1.54 KB
/
linear_regression.py
File metadata and controls
74 lines (49 loc) · 1.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
def correlation(x,y):
mean_x = sum(x)/len(x)
mean_y = sum(y)/len(y)
relationship = 0
denominator_x = 0
denominator_y = 0
for i in range(len(sizes)):
relationship += (sizes[i] - mean_x) * (prices[i] - mean_y)
denominator_x += (sizes[i] - mean_x) ** 2
denominator_y += (prices[i] - mean_y) ** 2
# Calculate the correlation coefficient (r)
r = relationship/ (denominator_x * denominator_y) ** 0.5
return r
def slope(x,y):
mean_x = sum(x)/len(x)
mean_y = sum(y)/len(y)
# Calculate the values needed for slope (m) and y-intercept (b)
numerator = 0
denominator = 0
for i in range(len(sizes)):
numerator += (sizes[i] - mean_x) * (prices[i] - mean_y)
denominator += (sizes[i] - mean_x) ** 2
m = numerator / denominator
return m
def intercept(x,y):
mean_x = sum(x)/len(x)
mean_y = sum(y)/len(y)
# Calculate the values needed for slope (m) and y-intercept (b)
numerator = 0
denominator = 0
for i in range(len(sizes)):
numerator += (sizes[i] - mean_x) * (prices[i] - mean_y)
denominator += (sizes[i] - mean_x) ** 2
m = numerator / denominator
b = mean_y - m * mean_x
return b
def predict_value(x,y, value):
mean_x = sum(x)/len(x)
mean_y = sum(y)/len(y)
# Calculate the values needed for slope (m) and y-intercept (b)
numerator = 0
denominator = 0
for i in range(len(sizes)):
numerator += (sizes[i] - mean_x) * (prices[i] - mean_y)
denominator += (sizes[i] - mean_x) ** 2
m = numerator / denominator
b = mean_y - m * mean_x
predicted_value = m * value + b
return predicted_value