【问题标题】:How to make python machine learning libraries amenable to incremental learning如何使 python 机器学习库适应增量学习
【发布时间】:2015-12-02 23:59:28
【问题描述】:

我需要经常使用新的训练数据更新我的训练模型,而不想再次进行整个训练,那么如何使用一些现有的库和 ML 算法使其适应增量学习?理想情况下,希望看到 NLTK 贝叶斯或 scikit 贝叶斯的示例。这里已经有一些答案说这很困难,但我相信会有一些库可以让我们这样做:

model.update(new-trainingdata)

不对整个数据重复相同的操作?

【问题讨论】:

    标签: python machine-learning training-data


    【解决方案1】:

    在 scikit-learn 中,您可以利用 MultinomialNBGaussianNBBernoulliNB 中提供的 partial_fit() 函数来逐步适应您的模型批量数据。当您处理大量数据以至于无法一次将其全部放入内存时,这很有用。

    一个展示这可能如何工作的例子如下:

    from sklearn.naive_bayes import GaussianNB
    import numpy as np
    import pandas as pd
    
    X = np.array([[1],[0],[2],[3],[4],[5],[1],[2],[3],[1],[3]])
    Y = np.array([1,1,1,1,1,0,0,0,0,1,1])
    all_classes = np.array([0,1])
    
    clf = GaussianNB()
    
    print clf.partial_fit(X, Y, classes=all_classes).class_count_
    
    print clf.partial_fit(X,Y, classes=all_classes).class_count_
    

    产量

    [ 4.  7.]
    [  8.  14.]
    

    这是有道理的,因为分类器会看到 4 0 和 7 1 两次。

    【讨论】:

    • 感谢它显示错误 raise TypeError('A sparse matrix was passed, but dense ' TypeError: A sparse matrix was passed, but dense data is required. Use X.toarray() to convert to a dense numpy 数组。
    • 您使用 partial_fit 的数据有多大?如果不是太大,你可以尝试X.toarray() 将稀疏矩阵数据结构变成密集的numpy数组。
    猜你喜欢
    • 2019-10-03
    • 2017-03-03
    • 2019-05-14
    • 2016-01-10
    • 1970-01-01
    • 2023-03-12
    • 2017-12-02
    • 1970-01-01
    • 2017-11-04
    相关资源
    最近更新 更多