Как добавить столбцы меток кластера обратно в исходный фрейм данных, для контролируемого обучения - PullRequest
1 голос
/ 27 марта 2019

В моем фрейме данных есть столбец, содержащий информацию URL.У него 1200+ уникальных значений.Я хотел использовать интеллектуальный анализ текста для создания функций из этих значений.Я использовал tfidfvectorizer для генерации векторов, а затем использовал kmeans для идентификации кластеров.Теперь я хочу назначить эти метки кластера обратно в мой исходный фрейм данных, чтобы я мог связать информацию URL в эти кластеры.

Ниже приведен код для генерации векторов и меток кластеров

from scipy.spatial.distance import cdist


vectorizer = TfidfVectorizer(min_df = 1,lowercase = False, ngram_range = (1,1), use_idf = True, stop_words='english')
X = vectorizer.fit_transform(sample\['lead_lead_source_modified'\])
X = X.toarray()
distortions=\[\]
K = range(1,10)
for k in K:
    kmeanModel = KMeans(n_clusters=k).fit(X)
    kmeanModel.fit(X)
    distortions.append(sum(np.min(cdist(X, kmeanModel.cluster_centers_, 'euclidean'), axis=1)) / X.shape\[0\])

#append cluster labels

km = KMeans(n_clusters=4, random_state=0)
km.fit_transform(X)
cluster_labels = km.labels_
cluster_labels = pd.DataFrame(cluster_labels, columns=\['ClusterLabel_lead_lead_source'\])
cluster_labels

Используя метод локтя, я выбрал 4 кластера.Теперь у меня есть метки кластера, но я не уверен, как добавить их в банк данных на соответствующий индекс.Конкатенация по оси = 1 создает Nans из-за проблем с индексацией.Ниже приведен пример выходных данных после конкатенации.

    lead_lead_source_modified   ClusterLabel_lead_lead_source
0   NaN                          3.0
1   NaN                          0.0
2   NaN                          0.0
3   ['direct', 'salesline', 'website', '']  0.0

Я хочу знать, является ли этот подход правильным способом, и если да, то как решить эту проблему.Если нет, есть ли лучший способ сделать это.

1 Ответ

1 голос
/ 27 марта 2019

Добавление значения индекса во время преобразования данных решило проблему.

Но все равно хочется знать, правильный ли это подход

...