【问题标题】:Keep csv feature labels for LDA pca为 LDA pca 保留 csv 特征标签
【发布时间】:2018-12-06 23:16:20
【问题描述】:

我正在尝试使用https://github.com/wwbp/facebook_topics/tree/master/csv 上的 2000 个主题的前 20 个频率数据

我想对数据执行随机 PCA。从文档来看,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: could not convert string to float: 'sonic'

有没有办法执行 PCA 并在之后保留特征标签而不仅仅是频率?

【问题讨论】:

    标签: python pandas csv pca


    【解决方案1】:

    PCA 不会丢弃或保留特征,但组件结果也不会映射到特征。 (给定xyzn_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

    【讨论】:

    • @ChuckIvan 还可以考虑使用 sklearn.pipeline,您可以(非常容易地)集成来自流行 NLP 库和 NN 库(keras、nltk、spaCy 等)的文本编码器。快乐的 nlp-ing
    【解决方案2】:

    PCA 的工作原理是解决要求特征为数值的优化问题。此代码正在尝试对非数字数据执行 PCA。您需要将字符串分解(编码)为数字。 sklearn.preprocessing.OrdinalEncodersklearn.preprocessing.OneHotEncoder 处理。

    Charles Landau 的特征提取解决方案看起来与该问题非常相关。

    【讨论】:

      猜你喜欢
      • 2018-04-11
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 2011-02-06
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      相关资源
      最近更新 更多