#### **二、使用逻辑回归训练一个鸢尾花分类器** * 只训练两个类别:山鸢尾和维吉尼亚鸢尾 * 使用二分类交叉熵损失函数 * 可视化损失和准确率变化过程,并保存 *不需要迭代100次
时间: 2024-11-13 08:17:16 浏览: 10
为了训练一个只关注山鸢尾和维吉尼亚鸢尾的逻辑回归分类器,你需要从鸢尾花数据集中提取这两类的数据,然后应用二分类交叉熵作为损失函数。这里是一个简化的示例,假设我们已经选择了对应的特征:
```python
import numpy as np
from sklearn import datasets, linear_model
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
# 加载鸢尾花数据集
iris = datasets.load_iris()
# 筛选山鸢尾和维吉尼亚鸢尾
mask = (iris.target == 0) | (iris.target == 2)
X = iris.data[mask][:, :2] # 仅保留前两个特征
y = iris.target[mask]
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建逻辑回归分类器
model = linear_model.LogisticRegression(multi_class='ovr', solver='liblinear', loss='binary_crossentropy')
# 拟合数据
model.fit(X_train, y_train)
# 预测并评估性能
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
# 可视化损失和准确率
plt.figure(figsize=(8, 6))
plt.plot(model.loss_curve_) # 假设`model.loss_curve_`是实际返回的损失曲线
plt.title('Loss and Accuracy for Virginia Iris vs. Setosa Iris')
plt.xlabel('Sample Index')
plt.ylabel('Loss/Accuracy')
plt.legend(['Loss', 'Accuracy'])
plt.show()
# 保存模型和图像
plt.savefig('logreg_virginia_vs_setosa.png')
model.save('virginia_vs_setosa_logreg.pkl') # 假设有对应保存模型的函数
print("Final Test Accuracy: ", accuracy)
```
在这个例子中,我们省略了迭代次数,因为逻辑回归的训练通常不会像深度学习那样需要手动控制迭代次数。`loss_curve_`属性可能会因版本而异,如果该属性不可用,你可以直接使用`model.score(X_test, y_test)`获取测试集的准确率。
阅读全文