这一节很简单,都是高中讲过的东西
简单线性回归:y=b0+b1x+ε。b1=(Σ(xi-x–)(yi-y–))/Σ(xi-x–)ˆ2 b0=y--b1x- 其中ε取 为均值为0的正态分布
多元线性回归差不多
我自己写了程序,练习一下面向对象编程
1 import numpy as np 2 3 class SimpleLinearRegression: 4 def __init__(self): 5 self.b0=0 6 self.b1=0 7 8 def fit(self,X,Y): 9 n=len(X) 10 dinominator=0 #分母 11 numeraor=0 #分子 12 for i in range(0,n): 13 numeraor+=(X[i]-np.mean(X))*(Y[i]-np.mean(Y)) 14 dinominator+=np.square((X[i]-np.mean(X))) 15 self.b1=numeraor/float(dinominator) 16 self.b0=np.mean(Y)-self.b1*np.mean(X) 17 print("intercept:",self.b0," slope:",self.b1) 18 print("y=",self.b0,"+",self.b1,"x") 19 def predict(self,X): 20 return self.b0+self.b1*X 21 22 23 X=[1,3,2,1,3] 24 Y=[14,24,18,17,27] 25 26 SLR=SimpleLinearRegression() 27 SLR.fit(X,Y) 28 Y_predict=SLR.predict(6) 29 print(Y_predict)
运行结果:
intercept: 10.0 slope: 5.0
y= 10.0 + 5.0 x
40.0
还有个多元线性回归的
1 from sklearn import datasets,linear_model 2 3 data=[[100,4,9.4],[50,3,4.8],[100,4,8.9],[50,2,4.2],[80,2,6.2],[75,3,7.4],[65,4,6],[90,3,7.6],[90,2,6.1]] 4 data=np.array(data) 5 print(data) 6 7 X=data[:,:2] 8 Y=data[:,-1] 9 #print(X," ",Y) 10 11 regr=linear_model.LinearRegression() 12 13 regr.fit(X,Y) 14 15 print("coefficients:",regr.coef_) 16 print("intercept",regr.intercept_) 17 18 Xpred=[[102,6]] 19 Ypred=regr.predict(Xpred) 20 print(Xpred,"Ypred:",Ypred)
这都太简单了,不多解释了。
一个知识点:
如果自变量有离散数据的话,就用分类器中用过的方法,有几类就转化为几组数据,是则为1,否则为0
今天还系统的入门了一下numpy,和pandas。等有时间了把numpy,pandas,还有matplotlib都系统的学一下。很有用的。