K均值聚类-处理非数值数据

问题描述 投票:0回答:1

我有要聚类的Twitter数据。它是文本数据,我了解到K表示无法处理非数值数据。我只想根据推文对数据进行聚类。数据看起来像这样。

enter image description here

我找到了可以将文本转换成数字数据的代码。

def handle_non_numerical_data(df):
    columns = df.columns.values

    for column in columns:
        text_digit_vals = {}
        def convert_to_int(val):
            return text_digit_vals[val]

        if df[column].dtype != np.int64 and df[column].dtype != np.float64:
            column_contents = df[column].values.tolist()
            unique_elements = set(column_contents)
            x = 0
            for unique in unique_elements:
                if unique not in text_digit_vals:
                    text_digit_vals[unique] = x
                    x += 1

            df[column] = list(map(convert_to_int, df[column]))

    return df

df  = handle_non_numerical_data(data)
print(df.head())

输出

   label  tweet
0      9     24
1      5     11
2     17     45
3     14    138
4     18    112

我对此很陌生,我认为这不是我需要的数据。处理这种性质的非数值数据(文本)的更好方法是什么?

编辑:当运行K表示对原始文本数据进行聚类算法时,出现此错误。

ValueError:无法将字符串转换为浮点数

python k-means
1个回答
0
投票

处理非数字数据的最典型方法是将单个列转换为多个二进制列。这称为“获取伪变量”或“一种热编码”(在许多其他卑鄙的术语中)。

基本上,您将获得列中唯一值的数量,并创建许多新列,每个新列中都填充有零和一。

让我们专注于您的第一列:

import pandas as pd
df = pd.DataFrame({'account':['realdonaldtrump','naredramodi','pontifex','pmoindia','potus']})

    account
0   realdonaldtrump
1   naredramodi
2   pontifex
3   pmoindia
4   potus

相当于:

pd.get_dummies(df, columns=['account'], prefix='account')

   account_naredramodi  account_pmoindia  account_pontifex  account_potus  \
0                    0                 0                 0              0   
1                    1                 0                 0              0   
2                    0                 0                 1              0   
3                    0                 1                 0              0   
4                    0                 0                 0              1   

   account_realdonaldtrump  
0                        1  
1                        0  
2                        0  
3                        0  
4                        0

这是许多方法之一。您可以查看one hot encoding here的文档。

© www.soinside.com 2019 - 2024. All rights reserved.