如何在任何分类器的训练期间获得预测标签?

2024-04-19 08:35:20 发布

您现在位置:Python中文网/ 问答频道 /正文

在培训阶段,我是否可以通过分类标签来跟踪模型的性能?来自sklearn的任何分类器都可以作为示例

更具体地说,我想在这里得到类似于混淆矩阵的列表:

clf = LinearSVC(random_state=42).fit(X_train, y_train)
# ... here ...
y_pred = clf.predict(X_test)

我在这里的目标是观察模型(在培训期间)的学习情况。这类似于分析培训损失,这是DNN的一种常见做法,pyTorch、Keras和Tensorflow等库已经实现了这种功能


我想快速浏览一下网络会让我得到我想要的,但显然不是。不过,我仍然认为这应该相当简单


1条回答
网友
1楼 · 发布于 2024-04-19 08:35:20

一些ML从业者喜欢使用三重数据:培训、验证和测试集。后者根本不应该出现在任何训练中,但中间派可以。例如,交叉验证在“培训阶段”使用K个不同的验证集折叠,以便在使用数据的不同部分进行培训时获得偏差较小的性能估计

但是你可以根据你的要求在一个单一的验证折叠上完成这项工作

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
X_train2, X_valid, y_train2, y_valid = train_test_split(X_train, y_train, test_size=0.2)

# Fit a classifier with train data only
clf = LinearSVC(random_state=42).fit(X_train2, y_train2)
y_valid_pred = clf.predict(X_valid)
confusionm_valid = confusion_matrix(y_valid, y_valid_pred) # ... here ...

# Refit with all your training data
clf = LinearSVC(random_state=42).fit(X_train, y_train)
y_pred = clf.predict(X_valid)

相关问题 更多 >