K使用多个列表示结构化数据



一个k在结构化数据中的多个列中意味着如何?

在下面的示例中,已在1列(名称)

上完成

tfidf_matrix = tfidf_vectorizer.fit_transform(df_new ['name'])

在这里只使用名称,但说我们想使用名称和国家,我应该将国家添加到同一列中吗?

df_new['name'] = df_new['name'] + " " + df_new['country']
tfidf_matrix = tfidf_vectorizer.fit_transform(df_new['name'])

它从代码的角度起作用,并且仍在尝试理解结果(我实际上有大量列)数据,但我想知道当有多个列时,这是否是正确的合适方法

import os
import pandas as pd
import re
import numpy as np
df = pd.read_csv('sample-data.csv')

def split_description(string):
    # name
    string_split = string.split(' - ',1)
    name = string_split[0]
    return name

df_new = pd.DataFrame()
df_new['name'] = df.loc[:,'description'].apply(lambda x: split_description(x))
df_new['id'] = df['id']

def remove(name):
    new_name = re.sub("[0-9]", '', name)
    new_name = ' '.join(new_name.split())
    return new_name
df_new['name'] = df_new.loc[:,'name'].apply(lambda x: remove(x))

from sklearn.feature_extraction.text import TfidfVectorizer

tfidf_vectorizer = TfidfVectorizer(
                                   use_idf=True,
                                   stop_words = 'english',
                                   ngram_range=(1,4), min_df = 0.01, max_df = 0.8)

tfidf_matrix = tfidf_vectorizer.fit_transform(df_new['name'])
print (tfidf_matrix.shape)
print (tfidf_vectorizer.get_feature_names())

from sklearn.metrics.pairwise import cosine_similarity
dist = 1.0 - cosine_similarity(tfidf_matrix)
print (dist)

from sklearn.cluster import KMeans
num_clusters = range(1,20)
KM = [KMeans(n_clusters=k, random_state = 1).fit(tfidf_matrix) for k in num_clusters]

no,这是适合多个列的不正确方法。基本上,您只是简单地将多个功能列入在一起,并期望它的行为正确,就好像Kmeans被应用于这些多个列作为单独的功能一样。

您需要使用其他方法(例如矢量器和管道)以及tfidifvectorizor在多列上进行此操作。您可以查看此链接以获取更多信息。

此外,您可以查看此答案,以获取有关问题的替代解决方案。

最新更新