我正在尝试使用https://github.com/wwbp/facebook_topics/tree/master/csv的2000个主题的前20个频率数据
我想对数据执行randomizedPCA。在文档中,X需要是类似数组的形状(n_samples,n_features)。
我已经用LDA_topics = pd.read_csv(r'2000topics.top20freqs.keys.csv', header=None, index_col=0, error_bad_lines=False)
导入了该文件
但是,这不是以下行的正确格式:
pca2 = sklearn.decomposition.RandomizedPCA(n_components=45)
pca2.fit(LDA_topics)
导致出现ValueError:无法将字符串转换为浮点数:'sonic‘
有没有一种方法可以在执行PCA后保留特征标签,而不仅仅是频率?
发布于 2018-12-07 07:35:53
PCA不会丢弃或保留特征,但组件结果也不会映射到特征。(给定x
、y
、z
和一个n_components=2
参数,得到的两个组件不会完美地映射到任何xyz
。)如果您希望将特征名称保留为降维的一部分,则可能需要探索其他方法(sklearn has a whole section for this)。
Chuck Ivan是正确的,在你做PCA之前需要一个编码器或矢量器。我喜欢他的OrdinalEncoder建议,但您也可以考虑这个列表中的sklearn文本实用程序:https://scikit-learn.org/stable/modules/classes.html#module-sklearn.feature_extraction.text
发布于 2018-12-07 07:28:47
PCA的工作原理是解决一个优化问题,该问题要求您的特征是数值的。此代码尝试对非数字数据执行PCA。您需要将字符串分解(编码)为数字。sklearn.preprocessing.OrdinalEncoder和sklearn.preprocessing.OneHotEncoder会处理这个问题。
Charles Landau的特征提取解决方案看起来与这个问题非常相关。
https://stackoverflow.com/questions/53661114
复制相似问题