【问题标题】:Python Memory Error - Sklearn Huge Input Data?Python 内存错误 - Sklearn 巨大的输入数据?
【发布时间】:2013-02-15 12:25:37
【问题描述】:

我需要在 sklearn 中训练 svm 分类器。特征向量的维度有数十万个,这样的特征向量有数万个。但是,每个维度都可以是 0、1 或 -1。每个特征向量中只有大约 100 个是非零的。有什么有效的方法可以将有关特征向量的信息提供给分类器?

【问题讨论】:

    标签: python svm scikit-learn


    【解决方案1】:

    我需要在 sklearn 中训练 svm 分类器。

    你是说sklearn.svm.SVC?对于高维稀疏数据和大量样本,LinearSVCLogisticRegressionPassiveAggressiveClassifierSGDClassifier 可以更快地进行训练以获得相当的预测精度。

    特征向量的维度以十万为单位,这样的特征向量有数万个。但是,每个维度都可以是 0、1 或 -1。每个特征向量中只有大约 100 个是非零的。有什么有效的方法可以将有关特征向量的信息提供给分类器?

    找到一种将数据加载为scipy.sparse 矩阵的方法,该矩阵不会将零存储在内存中。看看documentation on feature extraction。它将根据原始数据表示的性质为您提供执行此操作的工具。

    【讨论】:

    • 谢谢!!!稀疏矩阵表现出色。但是,分类器需要花费大量时间来训练。有什么建议吗?
    • 请打开一个新问题,详细说明:哪个 sklearn 类,什么是数据形状,什么是稀疏级别,有多少个目标类...
    • 请注意,根据文档,您的数组应该是 c 连续的。如果您使用 Pandas DataFrame,您可能会使用 f-contiguous 数组。在运行任何 scikit 算法时,这可能会导致 Python 内存异常。
    猜你喜欢
    • 1970-01-01
    • 2020-01-04
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    相关资源
    最近更新 更多