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()
这个例子中的数据比较简单,但是这个代码可以扩展到更复杂的数据集和模型中。