采用随机梯度下降(自定义函数)实现鸢尾花逻辑回归二分类模型以及输出交叉熵的值。
时间: 2024-09-25 20:12:09 浏览: 96
在Python中,我们可以使用Scikit-Learn库里的LogisticRegression模块来进行逻辑回归,而随机梯度下降通常用于优化过程,比如线性回归的损失函数最小化。然而,如果你想自定义随机梯度下降算法并应用到逻辑回归上,这涉及到一些数学计算和编程技巧。以下是大致步骤:
首先,你需要准备鸢尾花数据集,然后定义一个简单的线性模型(因为我们将在逻辑回归中使用Sigmoid函数作为激活函数),接着创建一个自定义的随机梯度下降函数,计算预测概率和交叉熵。
```python
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
# 加载鸢尾花数据
iris = datasets.load_iris()
X = iris.data[:, :2] # 我们只取前两个特征进行简化二分类
y = (iris.target == 0).astype(int) # 划分正负样本
# 分割训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
def sigmoid(z):
return 1 / (1 + np.exp(-z))
# 自定义随机梯度下降优化器
def gradient_descent(X, y, w, learning_rate, num_iterations):
m = len(y)
for _ in range(num_iterations):
dw = -1/m * np.dot(X.T, (sigmoid(np.dot(X, w)) - y))
w -= learning_rate * dw
return w
# 初始化权重
w = np.zeros(2)
learning_rate = 0.01
num_iterations = 1000
# 训练模型
w = gradient_descent(X_train, y_train, w, learning_rate, num_iterations)
# 预测概率
predictions = sigmoid(np.dot(X_test, w))
# 计算交叉熵
from sklearn.metrics import log_loss
cross_entropy = log_loss(y_test, predictions)
print("Cross entropy:", cross_entropy)
```
阅读全文
相关推荐
















