「已注销」 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 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip