# 导入必要的库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score, StratifiedKFold
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from sklearn.model_selection import cross_validate
# 1. 加载数据集
iris = load_iris()
X = iris.data # 特征数据
y = iris.target # 标签数据
# 2. 使用留出法划分数据集,1/3为测试集,2/3为训练集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42, stratify=y)
# 3. 创建逻辑回归模型
model = LogisticRegression(max_iter=200) # max_iter是最大迭代次数
# 4. 使用五折交叉验证评估模型性能
cv = StratifiedKFold(n_splits=5) # 五折交叉验证
cv_results = cross_validate(model, X_train, y_train, cv=cv,
scoring=['accuracy', 'precision_macro', 'recall_macro', 'f1_macro'])
# 输出交叉验证结果
print("交叉验证结果:")
print("准确度:", cv_results['test_accuracy'].mean())
print("精度:", cv_results['test_precision_macro'].mean())
print("召回率:", cv_results['test_recall_macro'].mean())
print("F1值:", cv_results['test_f1_macro'].mean())
# 5. 使用训练集训练模型
model.fit(X_train, y_train)
# 6. 在测试集上预测并评估模型
y_pred = model.predict(X_test)
# 输出测试集的评估指标
print("测试集评估:")
print("准确度:", accuracy_score(y_test, y_pred))
print("精度:", precision_score(y_test, y_pred, average='macro'))
print("召回率:", recall_score(y_test, y_pred, average='macro'))
print("F1值:", f1_score(y_test, y_pred, average='macro'))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通