gpt4 book ai didi

python - 在交叉验证集上评估从训练集中获得的损失函数值

转载 作者:行者123 更新时间:2023-11-28 22:17:01 25 4
gpt4 key购买 nike

我正在按照 Andrew NG 的说明评估分类中的算法:

  1. 找到训练集的损失函数。
  2. 将其与交叉验证的损失函数进行比较。
  3. 如果两者足够接近且足够小,则转到下一步(否则,存在偏差或方差等)。
  4. 使用上一步产生的结果 Thetas(即权重)对测试集进行预测作为最终确认。

我正在尝试使用 Scikit-Learn 库来应用它,但是,我真的迷路了,我确信我完全错了(我没有在网上找到任何类似的东西):

from sklearn import model_selection, svm
from sklearn.metrics import make_scorer, log_loss
from sklearn import datasets

def main():

iris = datasets.load_iris()
kfold = model_selection.KFold(n_splits=10, random_state=42)
model= svm.SVC(kernel='linear', C=1)
results = model_selection.cross_val_score(estimator=model,
X=iris.data,
y=iris.target,
cv=kfold,
scoring=make_scorer(log_loss, greater_is_better=False))

print(results)

错误

ValueError: y_true contains only one label (0). Please provide the true labels explicitly through the labels argument.

我什至不确定这是正确的开始方式。非常感谢任何帮助。

最佳答案

鉴于您在评论中提供的说明以及您对对数损失本身并不特别感兴趣,我认为最直接的方法是放弃对数损失并转而追求准确性:

from sklearn import model_selection, svm
from sklearn import datasets

iris = datasets.load_iris()
kfold = model_selection.KFold(n_splits=10, random_state=42)
model= svm.SVC(kernel='linear', C=1)
results = model_selection.cross_val_score(estimator=model,
X=iris.data,
y=iris.target,
cv=kfold,
scoring="accuracy") # change

Al 已经在评论中提到,在这种情况下包含日志丢失在 scikit-learn 中仍然存在一些 Unresolved 问题(参见 herehere)。

为了评估模型的泛化能力,您可以使用准确度指标。

关于python - 在交叉验证集上评估从训练集中获得的损失函数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51726062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com