线性回归

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

1.准备数据

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

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

2.计算均值

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

    mean_concentration = sum(concentrations) / len(concentrations)
    mean_absorbance = sum(absorbances) / len(absorbances)
    

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
    

4.计算预测值

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

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

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
    

完整的代码如下:

# 假设有浓度和吸光度的数据列表
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)

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

你可能感兴趣的:(机器学习,线性回归,python,算法)