利用回归分析来确定多个变量的依赖关系的方程称为回归方程。如果回归方程所呈现的图形为一条直线,则称为线性回归方程
y=kx+b即称为一元线性回归,也就是大家初中学的一次函数,原理比较简单,不再赘述。
问题描述:电影公司投资拍摄了五部电影,并且整理了各部影片的投资金额和票房收入,电影的投入和票房收入如下,接下来要拍一部投资两千万的电影,使用一元线性回归预测新电影的票房收入
1:数据可视化如下
可以看出 可以用一条直线来拟合
代码如下
import matplotlib.pyplot as plt import matplotlib; matplotlib.use('TkAgg') def drwaplt(): plt.figure() plt.title('cost and income of a film') plt.xlabel('cost(million yuan)') plt.ylabel('income(million yuan') plt.axis([0,25,0,60]) plt.grid(True) x=[[6],[9],[12],[14],[16]] y=[[9],[12],[29],[35],[59]] drwaplt() plt.plot(x,y,'k.') plt.show()
2:线性回归预测可视化如下
预测代码如下:
from sklearn import linear_model import matplotlib.pyplot as plt import matplotlib; matplotlib.use('TkAgg') def drawplt(): plt.figure() plt.title('cost(million yuan)') plt.xlabel('cost(million yuan)') plt.ylabel('income(million yuan)') plt.axis([0,25,0,60]) plt.grid(True) x=[[6],[9],[12],[14],[16]] y=[[9],[12],[29],[35],[59]] model=linear_model.LinearRegression() model.fit(x,y) a=model.predict([[20]]) w=model.coef_ b=model.intercept_ print('投资两千万的电影预计票房收入为:{:.2f}百万元'.format(model.predict([[20]])[0][0])) print("回归模型的系数是",w) print("回归模型的截距是",b) print("最佳拟合线:y=",int(b),"+",int(w),"x") drawplt() plt.plot(x,y,'k.') plt.plot([0,25],[b,25*w+b]) plt.show()