Как улучшить скорость работы с большими данными в python - PullRequest
0 голосов
/ 30 октября 2018

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

Цель состоит в том, чтобы рассчитать каждую вероятность предсказания в модели SVM, используя LinearSVC и OneVsRestClassifier, но получая ошибку

AttributeError: 'LinearSVC' object has no attribute 'predict_proba'

Из-за вышеуказанной ошибки, я попробовал ниже

Код

from sklearn import svm

model_1 = svm.SVC(kernel='linear', probability=True)

from sklearn.preprocessing import LabelEncoder

X_1 = df["Property Address"]
lb = LabelEncoder()
X_2 = lb.fit_transform(X_1)

y_1 = df["Location_Name"]
y_2 = lb.fit_transform(y_1)

test_1 = test["Property Address"]
lb = LabelEncoder()
test_1 = lb.fit_transform(test_1)

X_2= X_2.reshape(-1, 1)
y_2= y_2.reshape(-1, 1)
test_1 = test_1.reshape(-1, 1)

model_1.fit(X_2, y_2)

results = model_1.predict_proba(test_1)[0]

# gets a dictionary of {'class_name': probability}
prob_per_class_dictionary = dict(zip(model.classes_, results))

Есть ли другой способ решения той же задачи? пожалуйста, предложите

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Как предлагается в другом ответе, LinearSVC быстрее, чем SVC(kernel='linear').

Что касается вероятности, у SVC нет predict_proba(). Вместо этого вы должны установить его probability гиперпараметр на True. Link

Совет: SVM предпочтительнее для небольших наборов данных, поэтому предпочитайте использовать другие алгоритмы для обработки больших наборов данных.

0 голосов
/ 30 октября 2018

Вы можете использовать sklearns CalibratedClassifierCV , если вам нужно использовать метод predict_proba.

Или вы можете использовать Логистическая регрессия .

Если ваша проблема связана со скоростью, попробуйте использовать LinearSVC в sklearn.svm вместо SVC(kernel='linear'). Это быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...