Шаг 1. Отобразите общедоступный набор данных sms_spam_collection сообщества databricks.

%fs ls /databricks-datasets/sms_spam_collection/data-001/

Вывод: [FileInfo(path=’dbfs:/databricks-datasets/sms_spam_collection/data-001/smsData.csv’, name=’smsData.csv’, size=113674, upgradeTime=1447882401000)]

Шаг 2: Прочитайте файл в искровом фрейме данных.

импортировать pandas как pd
из sklearn.model_selection import train_test_split
из sklearn.feature_extraction.text import CountVectorizer
из sklearn import svm
из pyspark.sql.functions import split

df = spark.read.csv("/databricks-datasets/sms_spam_collection/data-001/smsData.csv",header=False)
df = df.toDF('smsData')
df = df.withColumn('метка', split(df['smsData'], '\t').getItem(0)).withColumn('сообщение', split(df['smsData'], '\t' ).getItem(1))
df = df.select('метка', 'сообщение')
dup_df = df.toPandas()

Вывод:

Шаг 3: Обработка данных перед подачей в классификатор

из pyspark.ml.feature import StopWordsRemover
remover = StopWordsRemover()
stopwords = remover.getStopWords()

pd_df = dup_df.drop_duplicates()

пунктуация = "#äöüÄÖÜß+:./$-_@.&+]|[!*\(),?:%+@+�"

def pre_process(message):
process_data = “”.join([char.lower() для char в сообщении, если char не в пунктуации])
return process_data

pd_df[‘сообщение’] = pd_df[‘сообщение’].apply(lambda x: pre_process(x))
pd_df.display()

Шаг 4: Запустите данные в классификаторе — Машина опорных векторов (SVM) и распечатайте матрицу путаницы.

импорт панд как pd
из sklearn.model_selection import train_test_split
из sklearn.feature_extraction.text import CountVectorizer
из sklearn /эм>

message = pd_df[‘message’]
label = pd_df[“label”]

message_train, message_test,label_train, label_test = train_test_split(message,label,test_size = 0,30)

cv = CountVectorizer()
features = cv.fit_transform(message_train)

model = svm.SVC()
model.fit(features,label_train)

features_test = cv.transform(message_test)

print("Точность модели",model.score(features_test,label_test)*100,"%")

метки = pd_df[«метка»].unique()
countdf = message_test.count()

vect = cv.transform(message_test).toarray()
предсказания = model.predict(vect)
cm = путаница_матрица (label_test, предсказания, метки = метки)
disp = ConfusionMatrixDisplay (confusion_matrix=cm, display_labels=labels)
disp.plot()