【问题标题】:pycaret, regression on target columnpycaret,目标列的回归
【发布时间】:2025-10-17 18:40:01
【问题描述】:

我正在尝试对 CSV 文件中的数据应用一些基于机器学习的回归。我的专栏是:

Index(['date', 'customer_id', 'product_category', 'payment_method',
       'value [USD]', 'time_on_site', 'clicks_in_site', 'USD/[Minutes]',
       'USD/clicks_in_site'],
      dtype='object')

当我跑步时:

from pycaret.regression import * 
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

exp_reg = setup(data = df, target='value [USD]', session_id=123,
             high_cardinality_features = ['product_category'],
             normalize = True,
             ignore_features = ['customer_id', 'date', 'time_on_site']
             )

我收到以下错误消息:

KeyError                                  Traceback (most recent call last)
<ipython-input-43-20eab85de0cc> in <module>()
      2              high_cardinality_features = ['product_category'],
      3              normalize = True,
----> 4              ignore_features = ['customer_id', 'date', 'time_on_site']
      5              )
      6 

5 frames
/usr/local/lib/python3.7/dist-packages/pandas/core/indexes/base.py in drop(self, labels, errors)
   5285         if mask.any():
   5286             if errors != "ignore":
-> 5287                 raise KeyError(f"{labels[mask]} not found in axis")
   5288             indexer = indexer[~mask]
   5289         return self.delete(indexer)

KeyError: "['value [USD]'] not found in axis"

【问题讨论】:

  • 编辑您的问题以添加缺少的import 语句,以便我们查看setup() 来自哪个模块。所以要求您发布minimal reproducible example('MCVE')。
  • 谢谢,把imports放进去!
  • 谢谢,我们只需要绝对最小数量的导入来运行您的代码示例。另外,这个问题应该被标记为python,让你的问题得到更多的关注。这个真的不需要pandas标签。

标签: python machine-learning regression pycaret


【解决方案1】:

我找到了解决方案。列名 ['value [USD]'] 是问题所在。重命名后,代码按预期工作。它可能与列名中的括号有关,可以解释为字典或列表,但我不确定。

【讨论】:

  • 听起来像是 pycaret 包上的错误。请检查他们的github issues,如果尚未列出,请提出一个新的。参见例如#247
  • 同时解决方法很明显。将其命名为“pycaret 无法索引包含括号的列名”之类的名称很有用。