使用梯度下降优化方法,编程实现 logistic regression 算法
时间: 2023-06-05 18:47:55 浏览: 149
机器学习算法之使用Python实现LogisticRegression算法.zip
使用梯度下降优化方法,编程实现 logistic regression 算法的步骤如下:
1. 定义 logistic regression 模型,包括输入特征、权重参数和偏置参数。
2. 定义损失函数,使用交叉熵损失函数。
3. 使用梯度下降法更新模型参数,包括权重参数和偏置参数。
4. 迭代更新模型参数,直到损失函数收敛或达到最大迭代次数。
5. 使用训练好的模型进行预测,计算预测准确率。
具体实现过程可以参考以下代码:
```python
import numpy as np
class LogisticRegression:
def __init__(self, learning_rate=.01, max_iter=100, tol=1e-4):
self.learning_rate = learning_rate
self.max_iter = max_iter
self.tol = tol
self.weights = None
self.bias = None
def sigmoid(self, x):
return 1 / (1 + np.exp(-x))
def fit(self, X, y):
n_samples, n_features = X.shape
self.weights = np.zeros(n_features)
self.bias =
loss =
for i in range(self.max_iter):
y_pred = self.sigmoid(np.dot(X, self.weights) + self.bias)
loss = -np.mean(y * np.log(y_pred) + (1 - y) * np.log(1 - y_pred))
if loss < self.tol:
break
dw = np.dot(X.T, (y_pred - y)) / n_samples
db = np.mean(y_pred - y)
self.weights -= self.learning_rate * dw
self.bias -= self.learning_rate * db
return loss
def predict(self, X):
y_pred = self.sigmoid(np.dot(X, self.weights) + self.bias)
return np.round(y_pred)
def score(self, X, y):
y_pred = self.predict(X)
return np.mean(y_pred == y)
```
其中,sigmoid 函数用于将线性模型的输出转换为概率值,损失函数使用交叉熵损失函数,梯度下降法用于更新模型参数。在训练过程中,如果损失函数小于设定的阈值,则停止迭代。最后,使用训练好的模型进行预测,并计算预测准确率。
阅读全文