11.21

# 导入必要的库
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'))
posted @   liuxuechao  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示