如何在Python中使用sklearn训练多次SVM分类器?

3

我在想是否可以在Python中的for循环内多次训练来自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个项目的整个数据和标签的两个相应数组中? 编辑:如果我想为每个主题单独训练一个分类器。那么上面的语法会是什么样子?我的编辑是否正确? 当我想要加载特定训练过的主题分类器时,我可以这样做:
C = joblib.load('somefolderpath/Model.pkl')
idx = C.predict(data)

?


somedatasomelabels是否取决于i,或者您为什么想要训练多个SVC实例?您是在寻找超参数优化吗? - Matt
我只想基于来自10个不同人的数据来训练我的模型。问题是是否最好并且可能在每次迭代中这样做,还是将它们全部放在一起并进行处理会更好。 - azal
你有什么样的数据,想要预测什么?这个问题很大程度上取决于给定的情境。 - Matt
嵌入向量和我想执行监督谱聚类。 - azal
我想做的事情是可以完成的。 - azal
显示剩余2条评论
1个回答

8

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


每个数据和标签都是包含数据和标签的相应数组的列表。你会建议做什么? - azal
标签是什么?正如Matt在上面所说的,这取决于你想做什么。你想跨患者学习吗? - Andreas Mueller
是的,我做。标签包含零、一等数组,其大小与数据列表中每个患者的项目大小相同。例如, - azal
是的,我做。标签包含零、一等数组,其大小与数据列表中每个患者的项目大小相同。例如,len(data1)=10,则len(labels)=10,data[0]对应于labels[0],data[1]对应于labels[1]等。问题在于,对于每个数据,其相应的data{i}对于每个患者具有相同的labels{i}。 - azal
我不知道你最后一句话的意思。听起来像是你想要连接数据。你必须学会跨患者学习。 - Andreas Mueller
好的,我使用extend()函数将数据和标签分别加入到两个大列表中。 - azal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接