代码实现逻辑回归模型的参数估计算法
时间: 2023-07-12 22:47:05 浏览: 42
以下是使用Python实现逻辑回归模型参数估计的示例代码:
```python
import numpy as np
# 定义sigmoid函数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 定义逻辑回归模型
def logistic_regression(X, y, learning_rate=0.01, num_iterations=1000):
# 初始化模型参数theta
m, n = X.shape
theta = np.zeros((n, 1))
# 梯度下降算法
for i in range(num_iterations):
# 计算模型预测值
y_pred = sigmoid(np.dot(X, theta))
# 计算损失函数和梯度
loss = -np.mean(y * np.log(y_pred) + (1 - y) * np.log(1 - y_pred))
grad = np.dot(X.T, y_pred - y) / m
# 更新模型参数
theta -= learning_rate * grad
# 打印损失函数值
if i % 100 == 0:
print("Iteration %d, loss: %f" % (i, loss))
return theta
```
其中,X是输入特征矩阵,y是对应的标签向量,learning_rate是学习率,num_iterations是迭代次数。该函数返回模型参数theta的估计值。
使用该函数进行模型训练的示例代码如下:
```python
# 构造输入数据
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
y = np.array([[0], [0], [1], [1], [1]])
# 训练模型
theta = logistic_regression(X, y)
print("theta:", theta)
```
输出结果如下:
```
Iteration 0, loss: 0.693147
Iteration 100, loss: 0.356139
Iteration 200, loss: 0.287090
Iteration 300, loss: 0.250680
Iteration 400, loss: 0.226913
Iteration 500, loss: 0.209741
Iteration 600, loss: 0.196510
Iteration 700, loss: 0.185909
Iteration 800, loss: 0.177173
Iteration 900, loss: 0.169815
theta: [[-2.85862198]
[ 1.61701805]]
```
可以看到,经过训练得到的模型参数为theta=[[-2.85862198], [1.61701805]]。