gpt4 book ai didi

machine-learning - scikit learn - 如何对由多个独立值组成的单个特征进行建模

转载 作者:行者123 更新时间:2023-11-30 08:29:18 25 4
gpt4 key购买 nike

我的数据集由数百万行和几个(10 个)特征组成。

一个特征是由 1000 个不同值组成的标签(假设每一行都是一个用户,该特征是用户的名字:

Firstname,Feature1,Feature2,....
Quentin,1,2
Marc,0,2
Gaby,1,0
Quentin,1,0

此功能的最佳表示(执行聚类)是什么:

  1. 我可以使用LabelEncoder将数据转换为整数,但在这里没有意义,因为两个不同标签之间没有逻辑“顺序”

    Firstname,F1,F2,....
    0,1,2
    1,0,2
    2,1,0
    0,1,0
  2. 我可以将特征拆分为 1000 个特征(每个标签一个),当标签匹配时为 1,否则为 0。然而,这会导致一个非常大的矩阵(如果我不能在分类器中使用稀疏矩阵,则太大)

    Quentin,Marc,Gaby,F1,F2,....
    1,0,0,1,2
    0,1,0,0,2
    0,0,1,1,0
    1,0,0,1,0
  3. 我可以将 LabelEncoder 值表示为 N 列中的二进制值,与之前的想法相比,这会减少最终矩阵的维度,但我不确定结果:

    LabelEncoder(Quentin) = 0 = 0,0
    LabelEncoder(Marc) = 1 = 0,1
    LabelEncoder(Gaby) = 2 = 1,0

    A,B,F1,F2,....
    0,0,1,2
    0,1,0,2
    1,0,1,0
    0,0,1,0
  4. ...还有其他想法吗?

您对解决方案 3 有何看法?

<小时/>

编辑一些额外的说明

我应该在我的第一篇文章中提到,但在真实的数据集中,该特征更像是分类树的最后一片叶子(Aa1Aa2 等) .在示例中 - 它不是二叉树)。

             A                         B                    C 
Aa Ab Ba Bb Ca Cb
Aa1 Aa2 Ab1 Ab2 Ab3 Ba1 Ba2 Bb1 Bb2 Ca1 Ca2 Cb1 Cb2

因此同一级别下的两个术语之间存在相似性(Aa1 Aa2Aa3 非常相似,并且 Aa1 Ba1Cb2 的不同之处一样多)。

最终目标是从较小的数据集中找到相似的实体:我们在较小的数据集上训练 OneClassSVM,然后获取整个数据集的每个术语的距离

最佳答案

这个问题很大程度上是one-hot编码问题之一。我们如何以一种可以使用聚类算法的方式表示多个分类值,并且搞砸算法需要执行的距离计算(您可以使用某种概率有限混合模型,但是我离题了)?就像 user3914041 的回答一样,确实没有明确的答案,但我会仔细研究您提出的每个解决方案并给出我的印象:

解决方案1

如果您将分类列转换为您提到的数字列,那么您将面临您提到的相当大的问题:您基本上失去了该列的含义。如果昆汀在 0、马克 1 和盖比 2 中,这到底意味着什么?那么,为什么还要将该列包含在聚类中呢?就像 user3914041 的答案一样,这是将分类值更改为数值的最简单方法,但它们没有用处,而且可能会对聚类结果产生不利影响。

解决方案2

在我看来,这将是您最好的选择,具体取决于您如何实现所有这些以及您的集群目标。因为我假设您计划使用 sklearn 和 k-Means 之类的东西,所以您应该能够很好地使用稀疏矩阵。但是,正如imaluengo 建议的那样,您应该考虑使用不同的距离度量。您可以考虑做的是将所有数字特征缩放到与分类特征相同的范围,然后使用余弦距离之类的东西。或者是距离度量的混合,就像我下面提到的那样。但总而言之,这可能是对聚类算法来说最有用的分类数据表示。

解决方案3

我同意 user3914041 的观点,因为这没有用,并且引入了一些与 #1 提到的相同的问题——当两个(可能)完全不同的名称共享一个列值时,你就失去了意义.

解决方案4

另一个解决方案是遵循答案 here 的建议。您可以考虑推出您自己的类似 k 均值算法的版本,该算法采用混合距离度量(用于单热编码分类数据的汉明距离,以及用于其余数据的欧几里德距离)。似乎有一些工作在开发 k 均值(例如混合分类和数值数据的算法),例如 here .

我想考虑是否需要对此分类数据进行聚类也很重要。你希望看到什么?

关于machine-learning - scikit learn - 如何对由多个独立值组成的单个特征进行建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31861834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com