Какая-либо библиотека Support Vector Machine Python вокруг этого позволяет дистанционное обучение?

Emacs является замечательным текстовым редактором. Это имеет огромную силу, как только Вы становитесь продвинутым пользователем. Можно получить доступ к оболочке, иметь столько файлов, открытых, сколько Вы хотите в как много подокон и чрезвычайно мощная поддержка сценариев, которая позволяет Вам добавить все виды аккуратных функций.

я использовал рубиновый режим, который добавляет подсветку синтаксиса и этажерку к рубину, и то же существует для каждого главного языка.

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

, Если Вы хотите запуститься с чего-то намного более основного, хотя, gedit хорош..., он создал в подсветке синтаксиса также для большинства языков на основе расширения файла. Это идет с ОС также (хотя emacs, которые можно легко установить со способным - добираются или некоторая подобная утилита средства поиска пакета).

ОБНОВЛЕНИЕ: Я думаю, что gedit является исключительно GUI, базирующимся, хотя, таким образом, было бы полезно изучить emacs в случае, если Вы застреваете только с оболочкой (это полнофункционально и в оболочке и в графическом режиме).

ДАЛЬНЕЙШЕЕ ОБНОВЛЕНИЕ: Просто к вашему сведению я не пытаюсь продвинуть Emacs по Vim, это, что я использую, и это - великий редактор (поскольку я уверен, что Vim также). Это является пугающим сначала (поскольку я уверен, что Vim также), но вопрос был о текстовых редакторах на Linux, кроме того, vi.. Emacs кажется логическим выбором мне, но gedit является великим простым текстовым редактором с некоторыми хорошими функциями, если это - все, что Вы ищете.

10
задан devoured elysium 23 November 2009 в 15:23
поделиться

3 ответа

LibSVM включает оболочку python, которая работает через SWIG.

Пример svm-test.py из их дистрибутива:

#!/usr/bin/env python

from svm import *

# a three-class problem
labels = [0, 1, 1, 2]
samples = [[0, 0], [0, 1], [1, 0], [1, 1]]
problem = svm_problem(labels, samples);
size = len(samples)

kernels = [LINEAR, POLY, RBF]
kname = ['linear','polynomial','rbf']

param = svm_parameter(C = 10,nr_weight = 2,weight_label = [1,0],weight = [10,1])
for k in kernels:
    param.kernel_type = k;
    model = svm_model(problem,param)
    errors = 0
    for i in range(size):
        prediction = model.predict(samples[i])
        probability = model.predict_probability
        if (labels[i] != prediction):
            errors = errors + 1
    print "##########################################"
    print " kernel %s: error rate = %d / %d" % (kname[param.kernel_type], errors, size)
    print "##########################################"

param = svm_parameter(kernel_type = RBF, C=10)
model = svm_model(problem, param)
print "##########################################"
print " Decision values of predicting %s" % (samples[0])
print "##########################################"

print "Numer of Classes:", model.get_nr_class()
d = model.predict_values(samples[0])
for i in model.get_labels():
    for j in model.get_labels():
        if j>i:
            print "{%d, %d} = %9.5f" % (i, j, d[i,j])

param = svm_parameter(kernel_type = RBF, C=10, probability = 1)
model = svm_model(problem, param)
pred_label, pred_probability = model.predict_probability(samples[1])
print "##########################################"
print " Probability estimate of predicting %s" % (samples[1])
print "##########################################"
print "predicted class: %d" % (pred_label)
for i in model.get_labels():
    print "prob(label=%d) = %f" % (i, pred_probability[i])

print "##########################################"
print " Precomputed kernels"
print "##########################################"
samples = [[1, 0, 0, 0, 0], [2, 0, 1, 0, 1], [3, 0, 0, 1, 1], [4, 0, 1, 1, 2]]
problem = svm_problem(labels, samples);
param = svm_parameter(kernel_type=PRECOMPUTED,C = 10,nr_weight = 2,weight_label = [1,0],weight = [10,1])
model = svm_model(problem, param)
pred_label = model.predict(samples[0])   
8
ответ дан 3 December 2019 в 23:13
поделиться

Не слышал ни об одном. Но действительно ли вам нужно онлайн-обучение? Я использую SVM довольно давно и никогда не сталкивался с проблемой, когда мне приходилось использовать онлайн-обучение. Обычно я устанавливаю порог количества изменений обучающих примеров (может быть, 100 или 1000), а затем просто переучиваю все в пакетном режиме.

Если ваша проблема находится в таком масштабе, где вам абсолютно необходимо использовать онлайн-обучение, тогда вы можете хочу взглянуть на vowpal wabbit .

Отредактировано ниже, после комментария:

Olivier Grisel предложил использовать оболочку ctypes вокруг LaSVM . Поскольку я раньше не знал о LaSVM и он выглядит довольно круто, я заинтригован попробовать его на своих собственных проблемах:

4
ответ дан 3 December 2019 в 23:13
поделиться

Why would you want to train it online? Adding trainings instances would usually require to re-solve the quadratic programming problem associated with the SVM.

A way to handle this is to train a SVM in batch mode, and when new data is available, check if these data points are in the [-1, +1] margin of the hyperplane. If so, retrain the SVM using all the old support vectors, and the new training data that falls in the margin.

Of course, the results can be slightly different compared to batch training on all your data, as some points can be discarded that would be support vectors later on. So again, why do you want to perform online training of you SVM?

0
ответ дан 3 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: