Sto facendo un compito di classificazione del testo. Ora voglio usare ensemble.AdaBoostClassifier
con LinearSVC
come base_estimator
. Tuttavia, quando provo a eseguire il codicesklearn.ensemble.AdaBoostClassifier non può accludere SVM come base_estimator?
clf = AdaBoostClassifier(svm.LinearSVC(),n_estimators=50, learning_rate=1.0, algorithm='SAMME.R')
clf.fit(X, y)
Si è verificato un errore. TypeError: AdaBoostClassifier with algorithm='SAMME.R' requires that the weak learner supports the calculation of class probabilities with a predict_proba method
La prima domanda è Non può il svm.LinearSVC()
calcolare le probabilità di classe? Come si fa a calcolare le probabilità?
Then I Modificare il parametro algorithm
ed eseguire nuovamente il codice.
clf = AdaBoostClassifier(svm.LinearSVC(),n_estimators=50, learning_rate=1.0, algorithm='SAMME')
clf.fit(X, y)
Questa volta si verifica TypeError: fit() got an unexpected keyword argument 'sample_weight'
. Come detto in AdaBoostClassifier, Sample weights. If None, the sample weights are initialized to 1/n_samples.
Anche se assegno un numero intero a n_samples
, si è verificato anche l'errore.
La seconda domanda è Che cosa significa n_samples
? Come risolvere questo problema?
Spero che qualcuno possa aiutarmi.
Secondo commento s' @jme, però, dopo aver provato
clf = AdaBoostClassifier(svm.SVC(kernel='linear',probability=True),n_estimators=10, learning_rate=1.0, algorithm='SAMME.R')
clf.fit(X, y)
Il programma non può ottenere un risultato e la memoria utilizzata sul server mantiene invariata.
La terza domanda è come posso fare AdaBoostClassifier
lavoro con SVC
come base_estimator?
in genere si desidera utilizzare un classificatore debole (ancora più debole di uno SVM lineare) nel promuovere, qualcosa di simile a un albero decisionale superficiale (o ceppo). I messaggi di errore che hai ricevuto sono abbastanza semplici: no, non puoi usare 'LinearSVC' qui, poiché la classe non ha un metodo' predicict_proba'. 'SVC' sì, se usi un kernel lineare. – jme
@jme Ho provato 'LinearSVC', ma siccome l'attività è la classificazione del testo, suppongo che potrei usare' SVM' in boosting per migliorare la precisione. Pensi che sia possibile? – allenwang
@jme Sono un principiante nel machine learning, oltre a 'ensemble', conosci altri metodi che possono migliorare l'accuratezza nella classificazione del testo? – allenwang