逻辑回归 python代码+训练数据
### 逻辑回归 Python 实现详解 #### 一、引言 逻辑回归(Logistic Regression)是一种广泛应用于分类问题中的统计学方法,特别是二分类问题。虽然名称中含有“回归”二字,但实际上它是一种分类算法。逻辑回归的核心是通过一个Sigmoid函数(也称为Logistic函数)来将线性回归的结果映射到[0,1]区间内,表示某个样本属于正类别的概率。 #### 二、理论基础 **1. Sigmoid 函数** \[ \sigma(z) = \frac{1}{1 + e^{-z}} \] 其中 \( z = w^T x + b \),\( w \) 是权重向量,\( x \) 是特征向量,\( b \) 是偏置项。该函数的输出值在[0,1]之间变化,可以被解释为正类的概率。 **2. 损失函数与优化目标** 对于逻辑回归,常用的损失函数是交叉熵损失函数(Cross-Entropy Loss),它定义为: \[ L(y,\hat{y}) = -y\log(\hat{y})-(1-y)\log(1-\hat{y}) \] 其中 \( y \) 是实际标签(0或1),\( \hat{y} \) 是预测的概率。 优化的目标是最小化损失函数,即最小化预测结果与真实标签之间的差距。 **3. 梯度下降法** 梯度下降是一种常用的学习算法,用于最小化损失函数。对于逻辑回归而言,可以通过计算损失函数关于每个参数的梯度,并更新这些参数来实现模型的训练。 #### 三、Python 实现 假设我们已经有了如下的训练数据集,其中每行代表一个样本,前四列是特征,最后一列是标签(0或1): | 特征1 | 特征2 | 特征3 | 特征4 | 标签 | |-------|-------|-------|-------|------| | 0.294 | 0.508 | 0.182 | 0.629 | 0 | | 0.187 | 0.606 | 0.075 | 0.806 | 0 | | ... | ... | ... | ... | ... | **1. 数据准备** 我们需要对数据进行预处理,包括加载数据、分割数据集等步骤。 ```python import numpy as np from sklearn.model_selection import train_test_split # 假设data是上述表格中的数据,每一行代表一个样本 data = np.array([ [0.294, 0.508, 0.182, 0.629, 0], [0.187, 0.606, 0.075, 0.806, 0], # 更多数据... ]) X = data[:, :4] # 特征 y = data[:, 4] # 标签 # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` **2. 模型实现** 接下来,我们将使用梯度下降法来训练逻辑回归模型。 ```python def sigmoid(z): return 1 / (1 + np.exp(-z)) def predict(X, weights): z = np.dot(X, weights) return sigmoid(z) def loss(h, y): return (-y * np.log(h) - (1 - y) * np.log(1 - h)).mean() def gradient_descent(X, y, alpha, epochs): m, n = X.shape weights = np.zeros(n) for epoch in range(epochs): h = predict(X, weights) gradient = np.dot(X.T, (h - y)) / m weights -= alpha * gradient return weights # 超参数设置 alpha = 0.01 # 学习率 epochs = 1000 # 迭代次数 # 训练模型 weights = gradient_descent(X_train, y_train, alpha, epochs) ``` **3. 模型评估** 我们需要评估模型在测试集上的表现。 ```python def accuracy_score(y_true, y_pred): correct_predictions = np.sum(y_true == y_pred) return correct_predictions / len(y_true) # 预测测试集 y_pred = (predict(X_test, weights) >= 0.5).astype(int) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print(f"Accuracy: {accuracy}") ``` #### 四、总结 本文详细介绍了如何使用Python实现逻辑回归模型,包括理论基础、模型实现和评估过程。逻辑回归作为一种简单的分类算法,在处理二分类问题时非常有效。通过对上述代码的学习,读者可以更好地理解逻辑回归的工作原理,并将其应用于实际项目中。