如何在循环结束后正确计算训练与测试分数的平均值?
问题修正方案
问题原因
你当前代码的问题是没有保存每次迭代的分数,最后计算均值时仅调用了最后一次迭代的模型分数,因此结果只是最后一次的分数值,而非5次迭代的平均值。
修正步骤
- 初始化两个空列表,用于存储每次迭代的训练分数和测试分数;
- 每次循环计算分数后,将分数添加到对应列表中;
- 循环结束后,对列表计算平均值。
修正后的完整代码
from sklearn.model_selection import train_test_split import numpy as np # 确保导入numpy库 # 初始化存储分数的列表 train_scores = [] test_scores = [] # 进行5次迭代 for i in range(5): X_train, X_test, y_train, y_test = train_test_split(X_normalized, y_for_normalized, test_size=0.1) clf = new_model.fit(X_train, y_train) # 计算并保存当前迭代的分数 train_score = clf.score(X_train, y_train) test_score = clf.score(X_test, y_test) train_scores.append(train_score) test_scores.append(test_score) # 打印当前迭代的分数 print("训练分数:", train_score) print("测试分数:", test_score) # 计算并打印5次迭代的分数均值 print("训练分数的均值为:", np.mean(train_scores)) print("测试分数的均值为:", np.mean(test_scores))
关键说明
train_scores和test_scores列表会累计每次迭代的分数,避免了仅保留最后一次结果的问题;np.mean(train_scores)会对列表中所有5个分数计算平均值,这才是你需要的5次迭代的平均结果。
内容的提问来源于stack exchange,提问作者Z47
相关产品推荐
相关产品推荐

