Python实现简单的线性回归算法
发布时间:2023-12-04 08:08:25
线性回归是一种被广泛应用于机器学习和统计分析的方法,用于预测一个连续变量的值。该方法基于一个假设:变量之间存在线性关系。这篇文章将介绍如何使用Python实现一个简单的线性回归算法,并提供一个使用例子进行说明。
首先,我们需要导入一些必要的库。在本例中,我们将使用NumPy进行数值计算,以及Matplotlib进行数据可视化。
import numpy as np import matplotlib.pyplot as plt
接下来,我们定义一个LinearRegression类来实现线性回归算法。
class LinearRegression:
def __init__(self, learning_rate=0.01, num_iterations=1000):
self.learning_rate = learning_rate
self.num_iterations = num_iterations
self.weights = None
self.bias = None
def fit(self, X, y):
num_samples, num_features = X.shape
self.weights = np.zeros(num_features)
self.bias = 0
for _ in range(self.num_iterations):
y_predicted = np.dot(X, self.weights) + self.bias
dw = (1/num_samples) * np.dot(X.T, (y_predicted - y))
db = (1/num_samples) * np.sum(y_predicted - y)
self.weights -= self.learning_rate * dw
self.bias -= self.learning_rate * db
def predict(self, X):
return np.dot(X, self.weights) + self.bias
算法的主要步骤包括初始化权重和偏差,以及在每次迭代中计算预测值、更新权重和偏差。
现在,我们使用一个简单的例子来说明线性回归算法的使用。假设我们有一些关于房屋面积和价格的数据,我们想要预测一个新房屋的价格。我们先生成一些随机的数据:
np.random.seed(0) num_samples = 100 X = np.random.rand(num_samples, 1) * 10 y = 3 * X + np.random.randn(num_samples, 1)
接下来,我们将数据分为训练集和测试集,并进行标准化处理:
X_train = X[:80] y_train = y[:80] X_test = X[80:] y_test = y[80:] X_mean = np.mean(X_train) X_std = np.std(X_train) y_mean = np.mean(y_train) y_std = np.std(y_train) X_train = (X_train - X_mean) / X_std y_train = (y_train - y_mean) / y_std X_test = (X_test - X_mean) / X_std y_test = (y_test - y_mean) / y_std
然后,我们使用训练集来训练线性回归模型,并进行预测:
model = LinearRegression() model.fit(X_train, y_train) y_pred_train = model.predict(X_train) y_pred_test = model.predict(X_test)
最后,我们可以使用Matplotlib绘制训练集和测试集的数据点,以及线性回归模型的预测线:
plt.scatter(X_train, y_train, color='blue', label='Train')
plt.scatter(X_test, y_test, color='red', label='Test')
plt.plot(X_train, y_pred_train, color='green', label='Prediction')
plt.xlabel('House Area')
plt.ylabel('Price')
plt.legend()
plt.show()
通过运行上述代码,我们可以获得一个展示训练集、测试集以及线性回归模型预测的图形。
这是一个简单的线性回归算法的实现和使用例子。线性回归算法是机器学习中最简单和常用的方法之一,它可以用于很多实际问题的预测和分析。希望这篇文章能帮助你理解线性回归算法的原理和使用方法。
