Шаг 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()