【问题标题】:How can i train multiple times an SVM classifier from sklearn in Python?如何在 Python 中多次训练来自 sklearn 的 SVM 分类器?
【发布时间】:2023-04-09 03:44:01
【问题描述】:

如果可以在 for 循环中多次使用 Python 中的 sklearn 训练 SVM 分类器,我一直在徘徊。我想到了以下内容:

for i in range(0,10):
    data = np.load(somedata)
    labels = np.load(somelabels)
    C = SVC()
    C.fit(data, labels)
    joblib.dump(C, 'somefolderpath/Model.pkl')

我希望我的模型针对 10 个数据及其标签中的每一个进行训练。以这种方式可能吗,还是我必须将所有数据和标签附加到两个相应的数组中,其中包含来自我的 10 个项目的全部数据和标签?

已编辑:如果我想为每个主题训练一个单独的分类器。那么上面的语法会是什么样子呢?我的编辑是否正确? 当我想为我的特定主题加载特定的训练分类器时,我可以这样做:

C = joblib.load('somefolderpath/Model.pkl')
idx = C.predict(data)

?

【问题讨论】:

  • 当然可以。这是否是一个好主意的问题取决于您想要实现的目标。这是什么?
  • somedatasomelabels 是否依赖于 i,或者您为什么要训练多个 SVC 实例?您在寻找超参数优化吗?
  • 我只想根据来自 10 个不同人的数据训练我的模型。问题是,在这样的每次迭代中是否更好并且可能做到这一点,或者将它们全部放在一起以及如何更好。
  • 你有什么样的数据,你想预测什么?这个问题很大程度上取决于给定的场景。
  • 嵌入向量,我想执行有监督的谱聚类

标签: python scikit-learn svm


【解决方案1】:

在任何 scikit-learn 估计器上调用 fit 都会忘记所有之前看到的数据。因此,如果您想使用所有数据(所有 10 名患者)进行预测,则需要先将其连接起来。 特别是,如果每个 somelabels 只包含一个标签,则代码没有意义,甚至可能出错,因为只存在一个类。

【讨论】:

  • 每个数据和标签都是列表,其对应的数组包含数据和标签。你打算做什么?
  • 标签是什么?正如马特上面所说,这取决于你想做什么。您想跨患者学习吗?
  • 是的,我愿意。标签包含相应的零、一等数组,其大小与每个患者的数据列表中的每个项目的大小相同。例如,
  • 是的,我愿意。标签包含相应的零、一等数组,其大小与每个患者的数据列表中的每个项目的大小相同。例如,len(data1)=10 then len(labels)=10 and data[0]对应labels[0],data[1]对应labels[1]等。问题是对于每个数据,它对应的数据{i} 对每个患者都有相同的标签{i}。
  • 我不知道你最后的陈述是什么意思。听起来您想连接数据。您必须跨患者学习。
猜你喜欢
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 2015-07-12
  • 2015-02-28
  • 2013-08-12
  • 2023-03-14
相关资源
最近更新 更多