【发布时间】:2019-08-23 14:10:45
【问题描述】:
我是机器学习的新手。
我正在使用带有“多项式”内核的支持向量机 (SVM) 进行多类分类。我的数据集大小是(56010395, 4),形式为(样本数,特征数)。但是,我的机器自过去 1 周以来一直在无休止地训练,但训练仍未完成。我的代码真的很基础,所以我不明白我的代码有什么问题。我无法对我的数据集进行子采样。我的 RAM 是 15 GB,我使用的是 i7 Intel CPU。
我已经尝试过使用线性分类器的 SVM,训练在 3 小时内完成,准确率达到 75%。此外,数据使用 MinMaxscaler 进行缩放。
from sklearn.svm import SVC
X_train, X_test, y_train, y_test = train_test_split(X_data, y_labels, test_size=0.3, random_state=0)
print('start training')
start = time. time()
svm_model_linear = SVC(kernel='poly', degree=3, C=1.0, gamma = 'auto').fit(X_train, y_train)
print('training_finished')
end = time. time()
print('time: ', end - start)
svm_predictions = svm_model_linear.predict(X_test)
【问题讨论】:
-
尝试通过减少词汇量来进行特征选择
-
这已经是一个减少特征的词汇表了。我无法进一步减少它。
-
如果花了那么多时间,并不一定意味着你的代码有问题。线性 SVC 的扩展性要好得多,所以我不会对有这么大的时差感到惊讶。您的 RAM 非常大,因此一种选择可能是为您的内核使用 cache_size 参数。也许您可以尝试 cache_size = 500 (或更大的值)?在您的数据的子样本上尝试一下,看看它是否能给您带来任何改进。
-
你有几节课?
-
为什么不能对数据进行二次抽样?
标签: python performance machine-learning scikit-learn svm