在分类/聚类任务中将文本值更改为 int

Posted

技术标签:

【中文标题】在分类/聚类任务中将文本值更改为 int【英文标题】:Change text values to int in classification/clustering task 【发布时间】:2020-05-06 21:44:22 【问题描述】:

有一个任务是在 R 中使用包含分类文本值(如“蓝色”、“红色”)的数据集进行聚类。 k-means 算法虽然只接受数值,所以我需要将这些文本类别转换为 int 类别。是否有任何 1 线解决方案?或者其他?

         Attribute1 Attribute2                     Attribute1 Attribute2
Instance1  "blue"     "red"         =>  Instance1       1          2
Instance2  "green"    "blue"            Instance2       3          1

a[,1] <- sapply(a[,1],switch,"blue"=1,"red"=2,"green"=3)

完成任务,但对于“a”数据框的第一列

x_num <- as.numeric(x)

与众不同,但看起来很像。

【问题讨论】:

你不能那样做,如果你把 "blue", "red" 转换成 1,2 你是在暗示某种我猜不是这样的顺序? 你应该做one-hot编码,或者尝试高尔距离进行聚类,例如r-bloggers.com/clustering-mixed-data-types-in-r 是的,非常感谢。这就是我一直在寻找的 很高兴它有帮助:) 【参考方案1】:

因此,当我们进行聚类分析时,我们希望使我们的聚类彼此尽可能远离。我想到的方法 太直接了,而且效果不好(如果实施)。好的解决方案是应用一些可以处理混合数据类型的距离度量。 cmets中提到的是gower,是通用的。二进制类别也存在 Jaccard 距离。 高尔解决方案(R)的例子:

library(cluster)
gower.dissimilarity.mtrx <- daisy(DataFrame, metric = c("gower"))

这里的函数是'daisy',虽然也有'dist',这使得一些东西相同,但使用欧几里得方法。 more on topic

【讨论】:

以上是关于在分类/聚类任务中将文本值更改为 int的主要内容,如果未能解决你的问题,请参考以下文章

技术 文本聚类与分类

中文文本分类1

白话自然语言处理(2)——文本分类

如何在 Django 管理员 ListView 中将 True 值更改为绿色检查

文本分类(初步)

React-Admin 在 SelectInput 中将值更改为自定义值