如何在scikit-multiflow中评估前标准化数据?

我有一个包含9个特征和9个预期目标的CSV文件,我希望在这组数据上测试两个回归模型(这些数据应以流的形式生成)。

当我使用相同的数据(通过scikit-multiflow从CSV文件生成流)测试两个模型时,我得到了一个很差的R2分数。

但当我使用scikit-learn对数据进行标准化后进行测试时,我得到了一个非常好的R2分数。问题是我不应该使用scikit-learn,因为我应该实时标准化数据。

所以我在scikit-multiflow中寻找类似的方法,我找到了两个方法:normalize_sample(X)normalize_targets(y)

但问题是normalize_sample依赖于一个名为examples_seen的变量,这个变量是模型已经使用过的样本数量(用于训练和测试)。据我所知,当我们对模型调用“evaluate”方法时,这个变量会发生变化。但这没有任何意义,因为我们应该先标准化数据然后再进行训练,而不是相反。我确定我在这里错过了什么。请有人帮帮我,因为没有这种用法的例子。

    import csv    from skmultiflow.data.file_stream import FileStream    from skmultiflow.trees import MultiTargetRegressionHoeffdingTree    from skmultiflow.evaluation import EvaluatePrequential    from skmultiflow.meta import RegressorChain    stream = FileStream('supervised_file_v4.csv', target_idx=9, n_targets=9)    stream.prepare_for_use()    ht = MultiTargetRegressionHoeffdingTree()    rh = RegressorChain()    ht.normalize_sample(stream.X)    # 这里它会返回一个包含10个零的数组,因为examples_seen = 0    evaluator = EvaluatePrequential(show_plot=False,                            pretrain_size=30000,                            max_samples=200000,                            metrics = ['average_mean_absolute_error','average_root_mean_square_error'])    # print(ht.examples_seen) 显示为0    evaluator.evaluate(stream=stream, model=[ht,rh], model_names=['HT', 'RH'])    # print(ht.examples_seen) 显示为200000    ht.normalize_sample(stream.X)    # 即使在这里它也会显示错误“操作数无法与形状(5733524,9) (9,) (5733524,) (9,) 一起广播”

我希望能在调用“evaluate”方法之前使用“normalize_sample”。请帮助我


回答:

简而言之: 当前版本的scikit-multiflow(0.3.0)没有提供增量标准化数据的专用方法。这仅由一些回归模型(RegressionHoeffdingTreeMultiTargetRegressionHoeffdingTree)内部执行。

关于实现细节:来自sklearn的标准化数据是不同的,因为正如你提到的,它考虑了所有数据。另一方面,normalize_samplenormalize_targets在模型观察到新样本时进行增量标准化。

evaluate方法不是模型的一部分,而是评估器类(你示例中的EvaluatePrequential)的一部分。特别是,预评估器首先调用predict(测试)方法,然后调用相应模型的partial_fit方法。内部参数samples_seen仅在训练期间更新。

来源: 我是scikit-multiflow的维护者

注意: 快速联系scikit-multiflow的开发者和社区的方法是通过官方平台(用户组、聊天、GitHub页面)。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注