利用回归分析来确定多个变量的依赖关系的方程称为回归方程。如果回归方程所呈现的图形为一条直线,则称为线性回归方程
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()