Могу ли я заставить SVM работать быстрее на больших наборах данных? - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть большой набор данных приблизительно (35000 x 27). Я бегу Sklearn SVM в линейной и полиномиальной регрессии. Время выполнения иногда составляет 30 минут или больше. Есть ли более эффективный способ запуска моего SVM?

Я пытался удалить ненужные отображения данных и пробовать разные комбинации теста и обучения, но это всегда близко к одинаковой продолжительности. Запуск gaussian или "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))

Я не получаю никаких ошибок, кроме того, что мне говорят, что нужно установить гамму вручную.

1 Ответ

0 голосов
/ 01 ноября 2019

Взгляните на этот ответ , который охватывает идею использования ансамблей небольших обученных моделей для выбора лучшего классификатора. По сути, идея состоит в том, чтобы проводить обучение на множестве небольших подмножеств данных. Взяв агрегированную модель, вы все равно включаете информацию из всех данных без обучения сразу по всем данным (, хотя она не будет точно эквивалентна ). Поскольку время обучения SVM масштабируется квадратично с количеством выборок, обучение на подмножествах данных должно быть намного быстрее.

...