Python 如何将培训集特定学习参数与sklearn online(核心外)学习相结合
我的数据集太大了,我正在sklearn中寻找在线学习解决方案,他们称之为核心外学习 它们提供了一些使用部分拟合API的类,基本上可以让您在内存中保留数据子集并对其进行操作。然而,许多预处理阶段(如数据缩放)在训练数据的拟合阶段保留参数,然后用于转换 例如,如果使用最小-最大定标器将特征绑定到[-1,1]或标准化数据,则它们学习并最终用于转换数据的参数将从它们在给定迭代中操作的训练数据的子集中学习 这意味着在拟合阶段对一个子集训练数据学习的参数可能与另一个子集训练数据不同,因为它们是特定于训练集的。这就是我问题的核心:Python 如何将培训集特定学习参数与sklearn online(核心外)学习相结合,python,machine-learning,scikit-learn,data-mining,data-analysis,Python,Machine Learning,Scikit Learn,Data Mining,Data Analysis,我的数据集太大了,我正在sklearn中寻找在线学习解决方案,他们称之为核心外学习 它们提供了一些使用部分拟合API的类,基本上可以让您在内存中保留数据子集并对其进行操作。然而,许多预处理阶段(如数据缩放)在训练数据的拟合阶段保留参数,然后用于转换 例如,如果使用最小-最大定标器将特征绑定到[-1,1]或标准化数据,则它们学习并最终用于转换数据的参数将从它们在给定迭代中操作的训练数据的子集中学习 这意味着在拟合阶段对一个子集训练数据学习的参数可能与另一个子集训练数据不同,因为它们是特定于训练集的
当使用在线/核心外学习时,当学习到的参数是训练数据的函数时,如何组合在预处理步骤的拟合阶段中学习到的参数?您可以将
StandardScaler
实例拟合到一个足够大的子集上,该子集可以一次装入RAM(比如说几GB的数据)然后重新使用scaler的同一个固定实例,一次一批地转换其余数据。您应该能够在数千个样本上获得每个特征的平均值和std值的良好估计,因此不需要仅为定标器计算完整数据的实际拟合
将partial_fit
方法添加到StandardScaler
类中,以实现完整性仍然是一件好事
但是,即使StandardScaler
采用了partial_-fit
方法,您仍然需要对数据执行多个路径(并可以选择将预处理的数据存储在驱动器上,以备以后重用):
- 第一步:对所有原始数据块调用
standard\u scaler.partial\u fit()
- 第二步:调用
standard\u scaler。对每个原始数据块进行变换
,然后将结果传递给
方法model.partial\u fit