把以下数据制作成csv数据文件,并命名为LR_data_exam.csv。 对该文件内的数据进行线性回归 画出数据的散点图 建立线性回归模型并拟合 打印拟合结果(参数) 画出数据和拟合直线的图。

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_)  # 打印拟合结果(参数)
# 画出数据和拟合直线的图
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()

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐