Я работаю над проблемой классификации текста multi-class
, для которой я реализовал свою модель, используя библиотеку sklearn LinearSVC
в python с loss = 'hinge'
и другими параметрами по умолчанию, и пока она дает удовлетворительные результаты.
Шаги, выполняемые перед передачей данных:
- Удаление специальных символов.
- Удаление стоп-слов.
- Стемминг.
Кодpart:
vectorizerPipe = Pipeline([('tfidf', TfidfVectorizer(lowercase=True,
stop_words='english')),
('classification', OneVsRestClassifier(LinearSVC(penalty='l2', loss='hinge'))),])
Теперь я хочу реализовать то же самое в Spark, используя MLlib в Scala.Я закончил тренировку и тестирование.Но результаты в основном разные.
val classifier = new LinearSVC()
.setMaxIter(1000)
.setRegParam(0.01)
.setThreshold(0.5)
.setTol(1E-4)
val ovr = new OneVsRest().setClassifier(classifier)
val pipeline = new Pipeline()
.setStages(Array(tokenizer, stopword_removal, stemming, hashingTF, idf, indexer, ovr))
Для сравнения, python дает более правильные результаты.
Я использовал приведенную ниже статью, чтобы понять основное различие между обеими библиотеками и применил их.Но нет большой разницы в результатах.
should-mllib-linearsvc-ведут себя так же, как-scik
Примечание: я использую искру2.2.0 и Linear SVC
в OneVsRest Classifier
Структура данных:
----------------------------------------------------------------------------------------
| product_title | Key_value_pairs | taxonomy_id (Output) |
----------------------------------------------------------------------------------------
Samsung S7 Edge | Color:black,Display Size:5.5 inch,Internal | 211
Storage:128 GB, RAM:4 GB,Primary Camera:12 MP
Case cover Honor 8 | Color:transparent,Height:15 mm,width:22 mm | 212
Ruggers Men's T-Shirt | Size:L,ideal for:men,fit:regular, | 111
sleeve:half sleeve
Optimum Nutrition Gold | Flavor:chocolate,form:powder,size:34 gm | 311
Standard Whey Protein
Я хочу понять основное различие между двумя библиотеками, а также какие параметры необходимо изменить вLinearSVC MlLib, чтобы получить аналогичные результаты.
Любая помощь очень ценится.Спасибо.