Python PCA sklearn ValueError:无法将字符串转换为浮点:';[1,3]';

Python PCA sklearn ValueError:无法将字符串转换为浮点:';[1,3]';,python,pandas,numpy,scipy,scikit-learn,Python,Pandas,Numpy,Scipy,Scikit Learn,我有一个熊猫数据框,看起来像这样 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

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

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]'

当观测长度不同时,如何处理这一问题 如果
[1,3]
表示该单个单元格有两个数据点,则首先使用汇总函数(例如平均值或中值)为该单元格建立单个值,然后运行PCA


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

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


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

编码如何?我尝试了label encoder,它确实转换了它们,但它为所有列表提供了一个标签我不确定如何更改,但听起来你仍然在解决实际问题。标签编码实际上是一个独立的主题,与您在这里提出的问题不同,这是关于为什么使用PCA得到
ValueError
。考虑为代码< LabelEncoder > <代码>线程打开一个单独的问题,并在那里更完整地描述问题。我想把它们标记为这个问题的解决方案,我添加了一个新问题,请检查并帮助我,如果PCA是一个减少,映射你的特征空间在最不同的行空间(方向),确实,如果其中一个数据点有不规则的输入,这将破坏计算。根据列表的物理意义,你应该考虑取平均值、几何数、斩首(放到0),转换为<代码> ABS(最大())>代码>或表示数据的东西。对于编码它们,我尝试了标签编码器,并且确实转换了它们,但是它给出了所有这些列表一个标签,我如何改变它们是不确定的,但听起来你还是在想你真正的问题。标签编码实际上是一个独立的主题,与您在这里提出的问题不同,这是关于为什么使用PCA得到
ValueError
。考虑为代码< LabelEncoder > <代码>线程打开一个单独的问题,并在那里更完整地描述问题。我想把它们标记为这个问题的解决方案,我添加了一个新问题,请检查并帮助我,如果PCA是一个减少,映射你的特征空间在最不同的行空间(方向),确实,如果其中一个数据点有不规则的输入,这将破坏计算。根据列表的物理含义,你应该考虑取平均值、几何数、斩首(放到0),转换为<代码> ABS(最大())< /代码>或表示数据足够好的东西。