如何并行将分类器列表的predict方法应用于Pandas DataFrame
高效批量应用多分类器predict方法到Pandas DataFrame的方案
现有一组实现了predict方法的分类器类实例,示例代码如下:
import pandas as pd class ClassifierA(): def __init__(self, name): self.name = name def predict(self, x): return x + 5 class ClassifierB(): def __init__(self, name): self.name = name def predict(self, x): return x + 10 class ClassifierC(): def __init__(self, name): self.name = name def predict(self, x): return x - 10 classifierA = ClassifierA(name="classifierA") classifierB = ClassifierB(name="classifierB") classifierC = ClassifierC(name="classifierC") list_of_classifiers = [classifierA, classifierB, classifierC]
同时有一个包含10条观测数据的Pandas DataFrame:
df = pd.DataFrame({ 'x': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] })
需要实现将列表中每个分类器的predict方法应用到df.x列,最终输出与以下循环代码完全一致:
for classifier in list_of_classifiers: df['{}_prediction'.format(classifier.name)] = df['x'].apply(lambda x: classifier.predict(x))
上述循环执行后的输出结果为:
x classifierA_prediction classifierB_prediction classifierC_prediction 0 1 6 11 -9 1 2 7 12 -8 2 3 8 13 -7 3 4 9 14 -6 4 5 10 15 -5 5 6 11 16 -4 6 7 12 17 -3 7 8 13 18 -2 8 9 14 19 -1 9 10 15 20 0
但目前的循环方法需要遍历分类器列表和数据行,效率较低;而手动指定每个分类器的方式:
predictions = df['x'].apply( lambda x: (classifierA.predict(x), classifierB.predict(x), classifierC.predict(x)))
在分类器数量较多时扩展性差,因此寻求更高效、可扩展的实现方案。
内容的提问来源于stack exchange,提问作者Vincent
相关产品推荐
相关产品推荐

