【问题标题】:PCA sklearn ValueError: could not convert string to float: '[1, 3]'PCA sklearn ValueError:无法将字符串转换为浮点数:'[1, 3]'
【发布时间】:2018-04-03 12:02:47
【问题描述】:

我有一个看起来像这样的熊猫数据框

1   0   0   0   0   2   0   0   0   0   0   ... 0   0   1   2   0   0   0   0   0   0
2   0   0   0   3   0   0   0   4   0   0   ... 0   5   0   0   3   0   0   [1, 3]  0   0
3   0   0   0   0   0   0   0   2   0   0   ... 6   6   0   [2, 4]  0   2   0   0   0   0
4   1   0   6   1   0   0   0   0   0   0   ... 0   0   0   0   4   0   0   5   0   0
5   0   0   0   0   6   0   0   [2, 7]  0   0   ... 0   0   0   0   0   0   0   0   0   0

我正在尝试使用 PCA 来降低我的数据的维度,但是数据中有一些点超过 1 维,例如 [2, 7] 所以当我运行 PCA 时,我得到了这个错误

data = pca.fit_transform(z)

ValueError: could not convert string to float: '[1, 3]'

我该如何处理

【问题讨论】:

    标签: python pandas numpy scipy scikit-learn


    【解决方案1】:

    普通 PCA 在观察长度不同时不起作用。
    如果[1,3] 表示该单个单元格有两个数据点,请使用汇总函数(例如平均值或中位数)首先为该单元格建立单个值,然后运行 ​​PCA。

    (另外,这些字段的 dtype 似乎是 str - 请记住转换为数字类型。)

    【讨论】:

    • 如何对它们进行编码我尝试了标签编码器,它确实转换了它们,但它为所有这些列表提供了一个标签,我该如何更改它
    • 我不确定,但听起来您仍在弄清楚您的实际问题。标签编码与您在此处询问的内容确实是一个单独的主题,这就是为什么您会使用 PCA 获得ValueError。考虑为LabelEncoder 线程打开一个单独的问题,并在那里更完整地描述问题。
    • 我想将它们标记为解决此问题的方法,我添加了一个新问题,请检查并帮助我stackoverflow.com/questions/46881360/…
    • PCA 是一种减少,它将您的特征空间映射到最多样化的行空间(~方向)中,实际上,如果您的数据点之一具有不规则的输入,这会破坏计算。根据列表的物理含义,您应该考虑取平均值、几何平均值、斩首(置为 0)、转换为 abs(max()) 或能够很好地代表数据的东西。
    猜你喜欢
    • 2020-05-25
    • 2018-09-20
    • 2019-02-06
    • 2019-02-08
    • 2020-08-26
    • 2020-05-05
    • 2020-01-22
    • 2019-04-27
    • 2022-10-13
    相关资源
    最近更新 更多