В моем фрейме данных есть столбец, содержащий информацию 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
Я хочу знать, является ли этот подход правильным способом, и если да, то как решить эту проблему.Если нет, есть ли лучший способ сделать это.