天天看點

算法梳理進階任務二:代碼實作簡單線性回歸(單變量)

代碼實作簡單線性回歸(單變量)

1、算術法:直接通過公式求解截距和斜率

import time

start = time.time()

import numpy as np

def fitslr(x,y):

n=len(x)

dinominator=0

numerator=0

for i in range (0,n):

numerator +=(x[i]-np.mean(x))(y[i]-np.mean(y))

dinominator+= (x[i]-np.mean(x))**2

print(“numerator”,numerator)

print(“dinominator”,dinominator)

b1=numerator/float(dinominator)

b0=np.mean(y)/float(np.mean(x))

print(b1)

print(b0)

return b0,b1

def predict(x,b0,b1):

return b0+xb1

x=[1,3,2,1,3]

y=[14,24,18,17,27]

b0,b1=fitslr(x,y)

x_text=6

y_text=predict(6,b0,b1)

print(“x_text”,y_text)

end = time.time()

print (end-start)

2:向量法:調用線性回歸模型

import time

start = time.time()

from sklearn.linear_model import LinearRegression

import numpy as np

x = np.array([1,3,2,1,3])

y = np.array([14,24,18,17,27])

model = LinearRegression()

model.fit(x.reshape(len(x),1), y)

print(model.coef_)

print(model.intercept_)

end = time.time()

print (end-start)

3、性能比較

運算結果在本例中兩個方法都一樣;

繼續閱讀