python一元线性回归代码

以下是一个简单的Python代码示例,用于执行一元线性回归:

import numpy as np
import matplotlib.pyplot as plt

# 输入数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([3, 5, 7, 9, 11])

# 计算均值
x_mean = np.mean(x)
y_mean = np.mean(y)

# 计算斜率和截距
numerator = 0
denominator = 0
for i in range(len(x)):
    numerator += (x[i] - x_mean) * (y[i] - y_mean)
    denominator += (x[i] - x_mean) ** 2
slope = numerator / denominator
intercept = y_mean - slope * x_mean

# 计算预测值
y_pred = slope * x + intercept

# 绘制数据和拟合线
plt.scatter(x, y)
plt.plot(x, y_pred, color='red')
plt.show()

在这个例子中,我们使用numpy和matplotlib库来执行一元线性回归。我们首先定义输入数据x和y,然后计算它们的均值。接下来,我们使用循环计算斜率和截距,并使用这些值计算预测值。最后,我们使用matplotlib库绘制数据和拟合线。

接下来我会详细解释一下这个代码的每一部分。

首先,我们导入了numpy和matplotlib.pyplot库,这两个库都是Python中常用的科学计算和数据可视化库。

import numpy as np
import matplotlib.pyplot as plt

接下来,我们定义了输入数据x和y,这里我们使用了numpy库中的array函数来创建数组。

x = np.array([1, 2, 3, 4, 5])
y = np.array([3, 5, 7, 9, 11])

然后,我们计算了x和y的均值,这里使用了numpy库中的mean函数。

x_mean = np.mean(x)
y_mean = np.mean(y)

接下来,我们使用循环计算了斜率和截距。在循环中,我们使用了x和y的均值来计算每个数据点的偏差,然后将这些偏差相乘并累加到numerator变量中。denominator变量则是x的偏差的平方和。最后,我们将numerator除以denominator得到斜率,将y的均值减去斜率乘以x的均值得到截距。

numerator = 0
denominator = 0
for i in range(len(x)):
    numerator += (x[i] - x_mean) * (y[i] - y_mean)
    denominator += (x[i] - x_mean) ** 2
slope = numerator / denominator
intercept = y_mean - slope * x_mean

最后,我们使用斜率和截距计算预测值,并使用matplotlib库绘制数据和拟合线。

y_pred = slope * x + intercept
plt.scatter(x, y)
plt.plot(x, y_pred, color='red')
plt.show()

这个例子中的数据比较简单,但是这个代码可以扩展到更复杂的数据集和模型中。