• 线性回归


    线性回归是一种用于建立自变量和因变量之间线性关系的统计模型。其步骤及代码如下所示:

    1.准备数据

    • 获取自变量(浓度)和因变量(吸光度)的数据,存储为两个列表

      concentrations = [0.1, 0.2, 0.3, 0.4, 0.5]
      absorbances = [0.5, 1.0, 1.5, 2.0, 2.5]
      
      • 1
      • 2

    2.计算均值

    • 分别计算自变量和因变量的均值

      mean_concentration = sum(concentrations) / len(concentrations)
      mean_absorbance = sum(absorbances) / len(absorbances)
      
      • 1
      • 2

    3.计算斜率和截距

    • 计算斜率 slope:使用公式 ∑ ( ( x − m e a n ( x ) ) ∗ ( y − m e a n ( y ) ) ) / ∑ ( ( x − m e a n ( x ) ) 2 ) \sum ((x - mean(x)) * (y - mean(y))) / \sum ((x - mean(x))^2) ((xmean(x))(ymean(y)))/((xmean(x))2)

    • 计算截距 intercept:使用公式 m e a n ( y ) − s l o p e ∗ m e a n ( x ) mean(y) - slope * mean(x) mean(y)slopemean(x)

      numerator = sum([(x - mean_concentration) * (y - mean_absorbance) for x, y in zip(concentrations, absorbances)])
      denominator = sum([(x - mean_concentration) ** 2 for x in concentrations])
      
      slope = numerator / denominator
      intercept = mean_absorbance - slope * mean_concentration
      
      • 1
      • 2
      • 3
      • 4
      • 5

    4.计算预测值

    • 使用得到的斜率和截距,对每个浓度值进行预测,得到对应的预测吸光度值

      predicted_absorbances = [slope * x + intercept for x in concentrations]
      
      • 1

    5.计算相关系数

    • 计算预测吸光度值的均值

    • 计算回归平方和 ssr:对每个预测吸光度值,计算其与预测吸光度均值之差的平方,并将所有平方差相加

    • 计算总平方和 sst:对每个实际吸光度值,计算其与实际吸光度均值之差的平方,并将所有平方差相加

    • 将 ssr 除以 sst,得到相关系数 r_value

      mean_predicted_absorbance = sum(predicted_absorbances) / len(predicted_absorbances)
      
      ssr = sum((pred_y - mean_predicted_absorbance) ** 2 for pred_y in predicted_absorbances)
      sst = sum((true_y - mean_absorbance) ** 2 for true_y in absorbances)
      
      r_value = ssr / sst
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

    完整的代码如下:

    # 假设有浓度和吸光度的数据列表
    concentrations = [0.1, 0.2, 0.3, 0.4, 0.5]
    absorbances = [0.5, 1.0, 1.5, 2.0, 2.5]
    
    # 计算均值
    mean_concentration = sum(concentrations) / len(concentrations)
    mean_absorbance = sum(absorbances) / len(absorbances)
    
    # 计算斜率和截距
    numerator = sum([(x - mean_concentration) * (y - mean_absorbance) for x, y in zip(concentrations, absorbances)])
    denominator = sum([(x - mean_concentration) ** 2 for x in concentrations])
    
    slope = numerator / denominator
    intercept = mean_absorbance - slope * mean_concentration
    
    # 预测吸光度值
    predicted_absorbances = [slope * x + intercept for x in concentrations]
    
    # 计算相关系数 r_value
    mean_predicted_absorbance = sum(predicted_absorbances) / len(predicted_absorbances)
    
    ssr = sum((pred_y - mean_predicted_absorbance) ** 2 for pred_y in predicted_absorbances)
    sst = sum((true_y - mean_absorbance) ** 2 for true_y in absorbances)
    
    r_value = ssr / sst
    
    print("斜率: ", slope)
    print("截距: ", intercept)
    print("相关系数 r_value: ", r_value)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    通过以上代码,可以计算出线性回归模型的斜率、截距以及相关系数 r_value,从而对浓度和吸光度之间的线性关系进行评估。

  • 相关阅读:
    stm32Cubemx USB虚拟串口
    Apple M1 开启HiDPI的新方法,无需虚拟屏,无需SwitchResX
    【无标题】
    leetcode:LCP 41. 黑白翻转棋【bfs + 翻转棋模拟】
    【linux】shell:简单的shell脚本练习
    (附源码)spring boot学科竞赛活动报名系统 毕业设计 012239
    Linear、Logistic回归
    【操作系统——内存基本分段式存储管理】
    GIT error: Committing is not possible because you have unmerged files.
    【Java 快速复习】垃圾回收算法 & 垃圾回收器
  • 原文地址:https://blog.csdn.net/weixin_48158964/article/details/134437468