Мне дали школьное задание для работы с Генетически-байесовским фильтром спама SMS , я пытаюсь построить алгоритм ML Генетически-байесовским фильтром спама SMS , в данном случае,я собираюсь использовать Genetic для выбора функций, а затем обучать его с байесовским, но моя проблема в том, что я пытаюсь узнать шаги, которые я собираюсь предпринять, чтобы сделать это правильно. PS: я хочу знать, является ли лучший способ выполнения следующих шагов.
Что я ожидаю в качестве конечного результата (если обученные функции извлечены с помощью Байеса) Ожидаю 90% точности классификации
Сначала я загружаю в набор данных и импортирую все необходимые модули.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import nltk
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer
import re
from nltk.tokenize import word_tokenize
from sklearn.model_selection import train_test_split
from tpot import TPOTClassifier
from tpot import TPOTRegressor
#to ignore warnings when running
import warnings
warnings.filterwarnings('ignore')
from sklearn.feature_extraction.text import CountVectorizer, HashingVectorizer
dfData = pd.read_csv('datasets/disambiguate_spam_sms.csv', encoding="latin-1")
print(dfData.shape)
dfData.head()
После первого шага я группирую их по категориям SMS, с которыми я работаю, из которых вв данном случае это (спам / ветчина)
#to show a chart of a particular category in the dataset
dfData.groupby('label').message.count().plot.bar(ylim=0)
plt.show()
print(4825/747) #Baseline accuracy
Затем я удалил нулевое значение
# remove null value from the dataset
dfDrop = dfData.dropna(subset=['label', 'message'])
dfDrop.head()
Затем я перетасовал свой набор данных
# randomly shuffle the data before starting, to avoid any type of ordering in the data
dfShuffle = dfDrop.iloc[np.random.permutation(len(dfDrop))]
dfSort = dfShuffle.reset_index(drop=True)
dfSort.head()
Я предварительно обработал набор данных
# Pre-processing the Raw Text and Getting It Ready for Machine Learning
stemmer = PorterStemmer()
words = stopwords.words("english")
dfSort['processedtext'] = dfSort['message'].apply(lambda x: " ".join([stemmer.stem(i) for i in re.sub("[^a-zA-Z]", " ", x).split()
if i not in words]).lower())
print(dfSort.shape)
Итак, после всего этого я нахожусь на этапе, когда я действительно не знаю, каким будет следующий этап.