Python 如何获得scikit的iterable learn partial_fit

Python 如何获得scikit的iterable learn partial_fit,python,scikit-learn,Python,Scikit Learn,我正在尝试使用哈希向量器使用文本数据训练sgdclassizer。我想知道如何组合传递给partial_fit()读取多个文件的批处理 下面的代码是通过iterable批量获取数据的合适方法吗?有没有最佳实践或推荐的方法来实现这一点 class MyIterable: def __init__(self, files, batch_size): self.files = files self.batch_size = batch_size def __iter__(self):

我正在尝试使用
哈希向量器
使用文本数据训练
sgdclassizer
。我想知道如何组合传递给
partial_fit()
读取多个文件的批处理

下面的代码是通过iterable批量获取数据的合适方法吗?有没有最佳实践或推荐的方法来实现这一点

class MyIterable:
def __init__(self, files, batch_size):
    self.files = files
    self.batch_size = batch_size
def __iter__(self):
    batchstartmark = 0
    for line in fileinput.input(self.files):
        while batchstartmark < self.batch_size
            yield line.split('\t')
            batchstartmark += 1
class MyIterable:
定义初始化(自身、文件、批大小):
self.files=文件
self.batch\u size=批次大小
定义(自我):
batchstartmark=0
对于fileinput.input(self.files)中的行:
当批次开始标记

提前谢谢

这里仅对这种方法的理论进行判断: 这是一个非常非常糟糕的方法

由于
sgdclassizer
正在使用随机梯度下降法(如果需要,可以使用小批量),您应该尝试满足数学分析的假设

SGD的基本思想是:选择一些随机元素并下降。您的代码明显偏离了两点:

  • A) 在每个时代,你都在以相同的顺序挑选元素
  • B) 您正在采样(不是真的)而无需更换
    • 因此,x17将不会被拾取,直到在此历元中每隔拾取一个x
您对A的无知很可能会导致非常糟糕的性能


这一点很难分析。有不同的理论观点,主要取决于某些特定问题(当然凸问题和非凸问题之间存在差异),虽然带替换的采样是经典的(具有最普遍的收敛性证明),但有时不带替换的采样(又名:历元/循环期间的洗牌和迭代)已使用,并且通常收敛速度更快。

请详细解释您想要做什么?您说得对,谢谢!到目前为止,我一直使用classifier.fit(),因为我的数据适合RAM,RAM默认情况下会洗牌数据。