You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中将文本文件的两列数据赋值给变量以执行线性回归

从文本文件提取两列数据并实现线性回归

第一步:读取文件,提取x、y两列数据

你首先得把文本文件里的每行数据拆分,分别存入x和y两个列表。假设你的文件每行是用空格(或制表符、逗号)分隔的两列数值,代码如下:

x = []
y = []
# 用with语句自动管理文件关闭,更安全
with open("linear.txt", "r") as file:
    for line in file:
        # 按空格拆分每行,若用逗号分隔就改成split(',')
        parts = line.strip().split()
        # 确保每行有有效两列数据
        if len(parts) == 2:
            x.append(float(parts[0]))
            y.append(float(parts[1]))

第二步:修正线性回归计算逻辑

你原来的代码存在几个问题:函数定义在调用之后、x(i)写法错误、截距公式写错、重复定义方差相关内容。下面是修正后的完整代码:

# 先定义均值计算函数
def mean(values):
    return sum(values) / len(values)

# 计算x和y的均值
x_mean = mean(x)
y_mean = mean(y)

# 计算斜率m的分子(协方差总和)和分母(x的离均差平方和)
numerator = sum((xi - x_mean) * (yi - y_mean) for xi, yi in zip(x, y))
denominator = sum((xi - x_mean)**2 for xi in x)

# 计算斜率m,避免分母为0的情况
m = numerator / denominator if denominator != 0 else 0
# 计算截距c,公式是y均值减去m乘以x均值
c = y_mean - m * x_mean

# 输出结果
print(f"线性回归方程:y = {m:.4f}x + {c:.4f}")

关键问题说明

  • 函数必须先定义再调用:你原来先写了计算m、c的代码,后面才定义mean函数,会直接报错。
  • 列表不能用x(i)这种写法:要同时遍历x和y的对应元素,用zip(x,y)配对取值即可。
  • 截距公式错误:正确公式是c = mean(y) - m * mean(x),你之前写成了x*mean(x),x是列表无法直接和数值相乘。
  • 处理除以0的情况:如果x的所有值都相同,分母会为0,加个判断能避免程序崩溃。

内容的提问来源于stack exchange,提问作者Joe Joplin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:15:31