gpt4 book ai didi

算法匹配两个数据集的类分布

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:51:08 25 4
gpt4 key购买 nike

我有 MC(蒙特卡洛/模拟)和数据,每个数据都有两个类 0 和 1 中的事件。我正在尝试编写一种算法,以便我可以将 MC 类 0 和 1 中的事件数与数据即我想通过将它们从一个类移动到另一个类来更正 MC 事件,以便数据和 MC 的两个类中的事件比率相同。我的处理方式是:

  1. 分别为数据和 MC(比如 data_clf 和 mc_clf)从 scikit 集成训练一个 GradientBoostingClassifier

     mc_clf.fit(X_mc, Y_mc)
    data_clf.fit(X_data , Y_data)
  2. 现在,如果 X_mc 是我的输入变量,使用 predict_proba 预测数据分类器的概率,并且 MC 仅使用 MC 输入,即

     y_mc = smcclf.predict_proba(X_mc)
    y_data = sdataclf.predict_proba(X_mc)
  3. 在此之后,我尝试通过比较它们在数据和 MC 中的概率,将 MC 事件从一个类移动到另一个类。

     for i in range(0, len(mc)):
    if (mc.loc[i]['mc_class'] == 0):
    wgt = y_data[i][0]/ y_mc[i][0]
    if (wgt<1): mc.loc[i]['mc_class_corrected'] = 1
    else: mc.loc[i]['mc_class_corrected'] = mc.loc[i]['mc_class']


    if (mc.loc[i]['mc_class'] == 1):
    wgt = y_data[i][1]/ y_mc[i][1]
    if (wgt<1) : mc.loc[i]['mc_class_corrected'] = 0
    else: mc.loc[i]['mc_class_corrected'] = mc.loc[i]['mc_class']

最后发生的事情是,最初假设与数据相比,我在 MC 中的 0 类事件多于 1 类事件。所以我希望 0 级的事件移动到 1 级。但是,我看到我在 MC 0 级的事件中几乎 >95% 正在移动到 1 级,而我预计只有大约 30% 的事件移动(比较时到数据和 MC 中的事件数)?这种工作思想有错吗?

非常感谢:)

最佳答案

也许是一个不适合 stackoverflow 的问题,如果您在其他地方发帖请告诉我,并且可以将其移走。但要指出我看到的一些问题:

  • 为什么 MC 模拟不能生成正确的类别权重?鉴于数据的正确先验分布,它应该能够。 “更正”输出似乎很模糊。
  • 您希望使用分类器的概率比来确定类别是否应该更改,而不是实际的类别比率。因此,永远不能指望达到“正确”的类别分布。
  • 这一切告诉您(如果大多数从 0 切换到 1)是 y_mc[i][0] > y_data[i][0]。因此它对 MC 分类器为 0 更有信心,因此将其切换为 1。
  • 如果 y_mcy_data 的分类器始终是 MC 分类器,它显然会更有信心预测 MC 数据,因为它就是这样接受过培训。
  • 您没有训练或测试拆分,因此上述关于始终更加自信的观点被放大了,因为您将大量过度拟合 X_mc 集。

如果没有样本数据(查看预测的实际值等)或实际代码(分类器的名称发生变化,表示不是实际代码),很难判断这些点的准确性。

关于算法匹配两个数据集的类分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51218079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com