-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLInear_reg.py
More file actions
69 lines (61 loc) · 2.18 KB
/
Copy pathLInear_reg.py
File metadata and controls
69 lines (61 loc) · 2.18 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
import numpy as np
import matplotlib.pyplot as plt
import re
class Linear1D:
def __init__(self):
print "ok now constructing your class"
def __del__(self):
print "ok now destructing your class"
def Linear1D_data(self):
#Empty lists to create datasets
X=[]
Y=[]
# Reading the csv data
for line in open("Provide your data path make sure it is progrssive data"):
x,y=line.split(',')
#print x,y
X.append(float(x))
Y.append(float(y))
Xarray=np.array(X)
Yarray=np.array(Y)
plt.scatter(Xarray,Yarray)
denominator =(Xarray.dot(Xarray))- (Xarray.mean() * Xarray.sum())
aslope = (Xarray.dot(Yarray) - Yarray.mean() * Xarray.sum()) / denominator
b = (Yarray.mean() * Xarray.dot(Xarray) - Xarray.mean() * Xarray.dot(Y)) / denominator
Yhat=aslope*Xarray+b
plt.scatter(Xarray,Yhat)
plt.show()
#Calculate the Rsquared
d1=Yarray-Yhat
d2=Yarray-Yarray.mean()
r2_squared=1-d1.dot(d1)/d2.dot(d2)
print r2_squared
def Moorelaw(self):
X=[]
Y=[]
non_decimal=re.compile(r'[^\d]+')
for line in open('Get a transistors data and paste the path'):
r=line.split('\t')
x = int(non_decimal.sub('', r[2].split('[')[0]))
y = int(non_decimal.sub('', r[1].split('[')[0]))
X.append(x)
Y.append(y)
Xarray=np.array(X)
Yarray=np.array(Y)
plt.scatter(Xarray,Yarray)
plt.show()
Yarray=np.log(Yarray)
denominator = (Xarray.dot(Xarray)) - Xarray.mean() * Xarray.sum()
aslope = (Xarray.dot(Yarray) - Yarray.mean() * Xarray.sum()) / denominator
b = (Yarray.mean() * Xarray.dot(Xarray) - Xarray.mean() * Xarray.dot(Yarray)) / denominator
Yhat = aslope * Xarray + b
plt.plot(Xarray, Yhat)
plt.show()
d1=Yarray-Yhat
d2=Yarray-Yarray.mean()
r2 = 1 - d1.dot(d1) / d2.dot(d2)
print aslope,b,r2
time_to_double=np.log(2.03)/aslope
print "The predicted year to double is ",time_to_double
make=Linear1D()
make.Moorelaw()