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}')

posted @   涨涨涨张  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
历史上的今天:
2023-12-19 阅读笔记8
2023-12-19 阅读笔记7
2023-12-19 阅读笔记6
2023-12-19 阅读笔记5
点击右上角即可分享
微信分享提示