菜鸟之路——机器学习之线性回归个人理解及Python实现

这一节很简单,都是高中讲过的东西

简单线性回归: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都系统的学一下。很有用的。

原文地址:https://www.cnblogs.com/albert-yzp/p/9543088.html