Как найти кластер в электронной почте - PullRequest
0 голосов
/ 15 сентября 2018

Я занимаюсь проектом машинного обучения, и у меня есть набор данных, который содержит частоту слов, которые встречаются в электронном письме. Мне нужно найти кластеры, к которым принадлежит каждое письмо. То, что я сделал, это то, что я загрузил данные в pandas dataframe, а затем обучил алгоритм KMeans. Набор данных выглядит следующим образом:

[
    {
        "adwords": 2,
        "google": 4,
        "ads": 2,
        "facebook": 1,
        "shyam": 2
    },
    {
        "facebook": 4,
        "post": 2,
        "is": 1,
        "comment": 2,
        "likes": 1,
        "google": 1
    },...]

Тогда мой код на Python выглядит так:

import numpy as np
import pandas as pd

data = pd.read_json('data.json', orient='records')
data = data.fillna(0)

from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=5, init='k-means++')
kmeans.fit_predict(data)

Теперь, поскольку у меня есть только 30 электронных писем, и я должен кластеризовать их в соответствии с данными словами, я не могу также разбиться на набор тестов поезда. Это правильный подход к решению проблемы. Пожалуйста, предложите, какой алгоритм будет лучше всего и что я должен делать. Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

@ rabin-poudyal, Обратите внимание, "Разделение / перекрестная проверка данных НИЧЕГО не имеет отношения к маркированному или немаркированному" набору данных. Напротив, перекрестная проверка применялась в кластеризации как в исследованиях, так и на практике. См. Эти документы для справки, 1 , 2 , 3 , 4 и многие другие. Также смотрите это обсуждение на SE

Как указывалось ранее, k-means работает только для непрерывных данных. Поскольку вы имеете дело с текстовыми данными, предложите использовать любой другой алгоритм кластеризации, который может работать, например, с категориальными данными, k-medoids

0 голосов
/ 16 сентября 2018

Вы обычно не выполняете любые виды разделения / перекрестной проверки в кластеризации.Просто потому, что алгоритм в любом случае не имеет меток, поэтому его не так легко переопределить, и вы не сможете легко выполнить гиперпараметрическую оптимизацию.

Однако вам необходимо тщательно рассмотреть предварительную обработку данных, особенно при работе с текстовыми данными.k-meane не является хорошим выбором: 1. некоторый текст может вообще не принадлежать ни к какому кластеру (это может быть нетипично) 2. некоторый текст может принадлежать нескольким кластерам (например, Дональд Трамп разглагольствует против стоящих на коленях игроков НФЛ = политика и спорт).Ни один из этих случаев хорошо не обрабатывается с помощью k-средних.

...