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:
2
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