首页 > 解决方案 > 我可以让 SVM 在大型数据集上运行得更快吗?

问题描述

我有一个大约 (35000 x 27) 的大型数据集。我在线性和多项式回归中运行 sklearn SVM。我的运行时间有时是 30 分钟或更长时间。有没有更有效的方法来运行我的 SVM?

我尝试删除不必要的数据显示,并尝试不同的测试和训练组合,但它总是接近相同的持续时间。然而,运行高斯或“RBF”大约需要 6 分钟,但准确度要低得多。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn import metrics

proteindata = pd.read_csv("data.csv")
np.any(np.isnan(proteindata))

print(proteindata.shape)
print(proteindata.columns)  
print(proteindata.head())

X = proteindata.drop("Class", axis=1)
y = proteindata["Class"]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.40)

Classifier = svm.SVC(kernel='poly')
Classifier.fit(X_train, y_train)

y_pred =  Classifier.predict(X_test)

print("Accuracy:", metrics.accuracy_score(y_test, y_pred))

除了被告知手动设置伽玛之外,我没有收到任何错误。

标签: pythonpython-3.xscikit-learnsvm

解决方案


看看这个答案,它涵盖了使用较小训练模型的集合来决定最佳分类器的想法。这个想法本质上是对许多较小的数据子集进行训练。采用聚合模型仍然会合并来自所有数据的信息,而无需立即对所有数据进行训练(尽管它不会完全等效)。由于 SVM 训练时间与样本数量成二次方关系,因此对数据子集的训练应该快得多。


推荐阅读