Машинното обучение помогна на Google да може да разделя спам съобщенията от тези, които не са спам. Някой може да си помисли, че изграждането на такъв е трудна задача бързо. В тази статия ще се опитам да ви покажа, че това е много прост процес. Както винаги съм правил в миналото, ще го обяснявам с помощта на работен процес за машинно обучение, който може да се види на изображението по-долу.

Преди да започнете, нека импортираме съответните библиотеки

СЪБИРАНЕ НА ДАННИ

Наборът от данни, използван в този проект, е получен от kaggle.com. Всички ресурси, използвани в този проект, ще бъдат в секцията с ресурси по-долу. Наборът от данни съдържа текстове и съответния им клас, който е или „спам“, или „хам“. Зареждането на набора от данни се извършва с помощта на библиотеката на pandas.

NB: Както вече виждаме, данните се нуждаят от почистване и това ни препраща към следващата фаза.

ПОЧИСТВАНЕ И ПРЕДВАРИТЕЛНА ОБРАБОТКА НА ДАННИ

Търсене и набор от данни. Имаме 3 колони, които не са подходящи и имената на колоните не са достатъчно описателни. И така, използвайки панди, и двете бяха разгледани, както можете да видите по-долу.

Преди да продължим напред, нека проверим за дисбаланс на повикванията.

Както виждаме, има огромен дисбаланс между класовете и това трябва да се вземе под внимание при достъпа до производителността на нашия модел.

ИЗВЛЕЧВАНЕ НА ХАРАКТЕРИСТИКИ И ИЗБОР НА ХАРАКТЕРИСТИКИ

Алгоритмите за машинно обучение работят само с числа и нашият набор от данни съдържа текст. тъй като нашата колона „Клас“ съдържа само „спам“ и „хам“, обикновено картографиране трябва да работи.

След това решаваме да разделим набора от данни на зависима и независима променлива. След това разделяне и на комплекти за обучение и тестове. Както подсказват имената, комплектът влакове ще се използва за обучение на нашия модел, а тестовият комплект ще се използва за тестване на производителността на нашия модел.

NB: В този момент колоната „Текст“ все още съдържа текст, а не числа.

Сега преобразуваме колоната „текст“ в числа, използвайки класа Count Vectorizer в sklearn. Ако не знаете как работи класът векторизатор на броя, ще направя връзка и статия по-долу, която ще обясни това добре.

Сега към най-лесната част от всичко.

МОДЕЛ НА КЛАСИФИКАЦИЯ

NB: Тук идва важна част. В наивния модул на Бейс в sklearn има три често използвани класификатора, които са MultinomialNB, GaussianNB и BernoulliNB.

BernoulliNB е най-добрият за двоични данни, MultinomialNB е най-добрият за категорични данни, поради което го използвахме, а GaussianNB е най-добрият за непрекъснати данни.

сега към последната фаза.

ПРОВЕРКА НА РАБОТАТА НА МОДЕЛА

Сега можем да видим, че както тренировъчният, така и тестовият набор имат 99% точност. Но не се заблуждавайте от това. Наборът от данни, с който работим, е дисбаланс, дори ако моделът беше предсказал всички класове като „ham“, точността щеше да е огромна. За да получим по-добра представа за точността, трябва да използваме матрицата на объркване. Тук решихме да създадем функция, която визуализира матрицата на объркване.

Използване на функцията за визуализиране на нашата матрица на объркване

С тази визуализация можем да видим, че моделът е класифицирал погрешно само 3 спам съобщения като шутка и 9 шутка съобщения като спам.

ЕКСТРА

Просто за забавление решихме да начертаем съобщенията за нежелана поща и хам чрез облак от думи.

За спам:

За шунка:

РЕСУРСИ:

Count Vectorizer: „https://towardsdatascience.com/basics-of-countvectorizer-e26677900f9c

GitHub: oluwatomsin/Spam_Detection: Това съдържа код за вграден модел за откриване на спам (github.com)