欢迎访问宙启技术站
智能推送

Python实现简单的机器学习算法:线性回归

发布时间:2023-12-04 08:03:47

线性回归是机器学习中最简单的回归算法之一。它的基本思想是通过建立一个线性模型来拟合数据,从而预测目标变量的值。在本文中,我们将使用Python来实现一个简单的线性回归算法,并提供一个使用例子。

首先,我们需要导入必要的库:

import numpy as np
import matplotlib.pyplot as plt

接下来,我们将使用NumPy库生成一些模拟数据。假设我们有一个自变量X和一个因变量Y,它们之间存在线性关系,我们可以使用以下代码生成数据:

# 生成模拟数据
np.random.seed(0)
X = np.random.rand(100, 1)
Y = 2 + 3 * X + np.random.rand(100, 1)

现在我们已经生成了一个包含100个样本的数据集。我们可以使用matplotlib库绘制这些数据点的散点图来可视化数据:

# 绘制散点图
plt.scatter(X, Y, s=10)
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

接下来,我们将使用线性回归算法来拟合这些数据。我们首先需要将自变量X添加一个常数项1,然后使用最小二乘法求解出 拟合直线的参数。代码如下:

# 添加常数项
X = np.hstack((np.ones_like(X), X))

# 使用最小二乘法求解参数
w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(Y)

通过上述代码,我们得到了 拟合直线的参数w。现在我们可以使用这些参数来预测新的数据点。假设我们有一个新的自变量x,我们可以使用以下代码来预测对应的因变量y:

# 预测新的数据点
x = 0.5
y = w[0] + w[1] * x
print('预测值:', y)

最后,我们可以绘制 拟合直线和原始数据点的散点图,以检验模型的拟合效果:

# 绘制拟合直线和散点图
plt.scatter(X[:, 1], Y, s=10)
plt.plot(X[:, 1], X.dot(w), color='r')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

完整的代码如下:

import numpy as np
import matplotlib.pyplot as plt

# 生成模拟数据
np.random.seed(0)
X = np.random.rand(100, 1)
Y = 2 + 3 * X + np.random.rand(100, 1)

# 绘制散点图
plt.scatter(X, Y, s=10)
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

# 添加常数项
X = np.hstack((np.ones_like(X), X))

# 使用最小二乘法求解参数
w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(Y)

# 预测新的数据点
x = 0.5
y = w[0] + w[1] * x
print('预测值:', y)

# 绘制拟合直线和散点图
plt.scatter(X[:, 1], Y, s=10)
plt.plot(X[:, 1], X.dot(w), color='r')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

这是一个简单的线性回归算法的实现,并通过一个使用例子对其进行了演示。线性回归是机器学习中的基础算法,也是其他更复杂算法的基石。希望本文能对您有所帮助。