使用梯度下降优化方法,编程实现 Logistic Regression 算法
时间: 2023-06-14 20:03:04 浏览: 107
梯度下降算法
好的,以下是使用梯度下降实现 Logistic Regression 算法的 Python 代码:
```python
import numpy as np
class LogisticRegression:
def __init__(self, learning_rate=0.01, max_iter=1000):
self.learning_rate = learning_rate
self.max_iter = max_iter
self.weights = None
self.bias = None
def sigmoid(self, z):
return 1 / (1 + np.exp(-z))
def fit(self, X, y):
n_samples, n_features = X.shape
self.weights = np.zeros(n_features)
self.bias = 0
for i in range(self.max_iter):
# calculate predicted y values
y_pred = self.sigmoid(np.dot(X, self.weights) + self.bias)
# calculate gradients
dw = (1 / n_samples) * np.dot(X.T, (y_pred - y))
db = (1 / n_samples) * np.sum(y_pred - y)
# update weights and bias
self.weights -= self.learning_rate * dw
self.bias -= self.learning_rate * db
def predict(self, X):
y_pred = self.sigmoid(np.dot(X, self.weights) + self.bias)
y_pred_cls = [1 if i > 0.5 else 0 for i in y_pred]
return np.array(y_pred_cls)
```
这段代码实现了一个简单的 Logistic Regression 模型。其中,`sigmoid` 函数用于将预测值转化为概率值,`fit` 方法用于训练模型(通过梯度下降更新模型参数),`predict` 方法用于预测新的样本标签。在 `fit` 方法中,我们利用了 Numpy 库中的一些函数,如 `np.dot`,`np.exp`,`np.sum` 等,这些函数可以高效地完成矩阵乘法、指数运算、求和运算等操作。
阅读全文