「已注销」 2021-06-28 10:33 采纳率: 85.7%
浏览 61
已采纳

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

  • 写回答

1条回答 默认 最新

  • CSDN专家-kaily 2021-06-28 14:24
    关注
    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]]
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图