Mam teksty, które są oceniane w skali ciągłej od -100 do +100. Próbuję sklasyfikować je jako pozytywne lub negatywne.

Jak możesz wykonać regresję dziennika binomicznej, aby uzyskać prawdopodobieństwo, że dane testowe wynosi -100 lub +100?

Najbliżej mnie mam, jest SGDClassier (karna = "L2", Alpha = 1E-05, N_iter = 10), ale nie zapewnia tego samego wyników, co SPSS, gdy używam regresji dziennika binomicznej, aby przewidzieć prawdopodobieństwo -100 i +100. Więc zgaduję, że nie jest to właściwa funkcja?

3
Zach 16 sierpień 2014, 01:17

2 odpowiedzi

Najlepsza odpowiedź

SGDClassier zapewnia dostęp do kilku klasyfikatorów liniowych, wszystkie przeszkolone z przyzwoitym gradientem stochastycznym. Będzie domyślnie do linii internetowej liniowej maszyny, chyba że zadzwonisz do innej funkcji strat. Strata = 'Log' zapewni probabilistyczną regresję logistyczną.

Zobacz dokumentację na:

Community 13 kwiecień 2017, 12:50

Jeśli POS / NEG, lub prawdopodobieństwo poz, jest naprawdę jedyną rzeczą, której potrzebujesz jako wyjście, a następnie możesz czerpać binarne etykiety y jako

y = score > 0

Zakładając, że masz wyniki w numpy array score.

Następnie możesz podawać to do instancji LogisticRegression, przy użyciu ciągłego wyniku, aby uzyskać względne wagi do próbek:

clf = LogisticRegression()
sample_weight = np.abs(score)
sample_weight /= sample_weight.sum()
clf.fit(X, y, sample_weight)

Daje to maksymalną wagę do tweetów z wynikami ± 100 i waga zera do tweetów, które są oznaczone neutralnym, różniącym się liniowo między nimi.

Jeśli zestaw danych jest bardzo duży, jak pokazano @BrentLance, możesz użyć SGDClassifier, ale musisz go podać loss="log", jeśli chcesz model regresji logistycznej; W przeciwnym razie otrzymasz liniową SVM.

0
Fred Foo 18 sierpień 2014, 10:13