12.19
(1)从scikit-learn 库中加载 iris 数据集,使用留出法留出 1/3 的样本作为测试集(注意同分布取样);
(2)使用训练集训练对数几率回归(逻辑回归)分类算法;
(3)使用五折交叉验证对模型性能(准确度、精度、召回率和 F1 值)进行评估和选择;
(4)使用测试集,测试模型的性能,对测试结果进行分析,完成实验报告中实验二的部分。
# 导入所需库
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import (accuracy_score, precision_score, recall_score, f1_score, make_scorer)
# 加载Iris数据集并划分训练集和测试集
iris = load_iris()
X, y = iris.data, iris.target
# 使用留出法,测试集占1/3
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=42, stratify=y)
print(f'训练集样本数: {X_train.shape[0]}, 测试集样本数: {X_test.shape[0]}')
# 使用训练集训练逻辑回归模型
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)
#使用五折交叉验证评估模型性能
scoring = {
'accuracy': 'accuracy',
'precision': make_scorer(precision_score, average='weighted'),
'recall': make_scorer(recall_score, average='weighted'),
'f1': make_scorer(f1_score, average='weighted')
}
# 进行五折交叉验证
scores = {}
for key in scoring.keys():
score = cross_val_score(model, X_train, y_train, cv=5, scoring=scoring[key])
scores[key] = score.mean(), score.std()
# 输出交叉验证结果
print("五折交叉验证结果:")
for metric, (mean, std) in scores.items():
print(f'{metric}:{mean:.4f} ± {std:.4f}')
# 使用测试集测试模型性能
y_pred = model.predict(X_test)
# 计算测试集的指标
test_accuracy = accuracy_score(y_test, y_pred)
test_precision = precision_score(y_test, y_pred, average='weighted')
test_recall = recall_score(y_test, y_pred, average='weighted')
test_f1 = f1_score(y_test, y_pred, average='weighted')
# 输出测试结果
print("\n测试集结果:")
print(f'测试集准确度: {test_accuracy:.4f}')
print(f'测试集精度: {test_precision:.4f}')
print(f'测试集召回率: {test_recall:.4f}')
print(f'测试集F1值: {test_f1:.4f}')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
2023-12-19 阅读笔记8
2023-12-19 阅读笔记7
2023-12-19 阅读笔记6
2023-12-19 阅读笔记5