python编程 线性回归

把以下数据制作成csv数据文件,并命名为LR_data_exam.csv。 
对该文件内的数据进行线性回归
画出数据的散点图
建立线性回归模型并拟合
打印拟合结果(参数) 
画出数据和拟合直线的图
用model.predict预测x为10,20,30时的结果
用拟合参数预测x为40,50,60时的结果
   battery,KM
   2,12
   5,31
   8,45
   8,52
   13,79
   15,85
   17,115
   19,119
   21,135
   24,145

import numpy as np
import csv
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
import matplotlib
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['font.family']=['sans-serif']

data = '''battery,KM
   2,12
   5,31
   8,45
   8,52
   13,79
   15,85
   17,115
   19,119
   21,135
   24,145'''.split('\n')
for i,j in enumerate(data):
    data[i] = j.replace(' ', '').split(',')

with  open('LR_data_exam.csv','w') as csvFile: #一行一行地写入到csv文件中
    writer = csv.writer(csvFile)
    #先写columns_name
    writer.writerow(data[0])
    #写入多行用writerows
    writer.writerows(data[1:])

 LR_data_exam.csv:

dataframe = pd.read_csv("LR_data_exam.csv", sep=",")
x = dataframe['battery'].tolist()
y = dataframe['KM'].tolist()

# 画出数据的散点图
fig = plt.figure()
fig.set_size_inches(10, 4)   # 整个绘图区域的宽度10和高度4
ax = fig.add_subplot(1, 2, 1)  # 整个绘图区分成一行两列,当前图是第一个。
# 画出原始数据的散点图。
ax.set_title("散点图")
ax.set_xlabel("battery")
ax.set_ylabel("KM")
ax.scatter(x, y)
plt.show()

regressor = LinearRegression()
regressor = regressor.fit(np.reshape(x,(-1, 1)),np.reshape(y,(-1, 1)))
print(regressor.coef_, regressor.intercept_)  # 打印拟合结果(参数)
[[6.28763667]] [-1.19680404]
# 画出数据和拟合直线的图
plt.scatter(x, y)
plt.plot(np.reshape(x,(-1,1)), regressor.predict(np.reshape(x,(-1,1))))
plt.xlabel("battery") 
plt.ylabel("KM") 
plt.title("拟合结果")
plt.show()

print(regressor.predict([[10], [20], [30]]))  # model.predict预测x为10,20,30时的结果
for i in [40,50,60]:
    print(regressor.coef_*i + regressor.intercept_)   #用拟合参数预测x为40,50,60时的结果
[[ 61.67956266]
 [124.55592935]
 [187.43229605]]
[[250.30866274]]
[[313.18502944]]
[[376.06139613]]