Python scikit learn ExtraTreesClassifier预测使用Pandas DataFarme、datatale Frame和Numpy阵列提供不同的执行时间

Python scikit learn ExtraTreesClassifier预测使用Pandas DataFarme、datatale Frame和Numpy阵列提供不同的执行时间,python,pandas,numpy,optimization,scikit-learn,Python,Pandas,Numpy,Optimization,Scikit Learn,我正在使用scikit学习树外分类器 import pandas as pd import datatable as dt import numpy as np from sklearn.ensemble import ExtraTreesClassifier def __init__(self): self.ExTrCl = ExtraTreesClassifier() 熊猫数据场与datatale帧与Numpy阵列的预测给出了不同的执行时间 首先,我基于测试数据集生成一个nump

我正在使用scikit学习树外分类器

import pandas as pd
import datatable as dt
import numpy as np
from sklearn.ensemble import ExtraTreesClassifier

def __init__(self):
    self.ExTrCl = ExtraTreesClassifier()
熊猫数据场与datatale帧与Numpy阵列的预测给出了不同的执行时间

首先,我基于测试数据集生成一个numpy 2d数组,
generateTestPart(testDataSet,列出列中使用的主题)

我使用三种方法进行预测,使用1)熊猫数据场:

def test_groupe_score_pd(self, test_matrix)
    start_time_0 = time.time()
    dftest = pd.DataFrame(test_matrix,columns=self.list_motifs)
    end_time = time.time()
    print(" time creating DataFrame = ", end_time-start_time_0)

    start_time = time.time()
    result = self.ExTrCl.predict(dftest)
    end_time = time.time()

    print(" Time pred only = ",end_time-start_time," s")
    print(" Time create + pred = ",end_time-start_time_0," s")
  • 使用datatable:
  • 直接使用numpy:
  • 使用尺寸大于500 Mo的基质得出的结果如下表所示:

    很明显,对于预测,使用大熊猫的效果最好,但是我们必须考虑数据文件的创建,因此,使用直接编号似乎是最好的选择。 问题是:为什么预测时间会有如此大的差异?使用熊猫vs数据表vs numpy

    谢谢你的帮助

        def test_groupe_score_dt(self, test_matrix):
            start_0_time = time.time()
            dt_dftest = dt.Frame(np.array(test_matrix),names=self.list_motifs)
            end_time = time.time()
        
            print(" time create Fram dt = ",end_time-start_0_time)
        
            start_time = time.time()
            result = self.ExTrCl.predict(dt_dftest)
            end_time = time.time()
        
            print(" Time pred only = ",end_time-start_time," s")
            print(" Time pred + create = ",end_time-start_0_time," s")
    
        def test_groupe_score_numpy(self, test_matrix):
            start_0_time = time.time()
            start_time = time.time()
            result = self.ExTrCl.predict(test_matrix)
            end_time = time.time()
            
            print(" Time pred only = ",end_time-start_time," s")