首页 > 解决方案 > `ValueError:y 中人口最少的类只有 1 个成员,这在 PyCaret 中太少了

问题描述

我有一个问题,使用 PyCaret。以前我没有任何问题。

但它开始于我对数据进行过采样并保存它,使用pandas这个问题

文件在这里

然后我在一个单独的笔记本中阅读了该文件。

import pycaret
from pycaret.utils import version
from pycaret.regression import *
from pycaret.classification import *

# Read clean data
starbucks_days = pd.read_csv('days_smote.csv')

# Drop a column
starbucks_days = starbucks_days.drop(['Unnamed: 0'], axis = 1)
starbucks_days = starbucks_days.drop(['transaction', 'offer_viewed', 'offer_received', 'offer_completed'], axis = 1)
starbucks_days = starbucks_days.drop(['label'], axis = 1)

我开始使用 PyCaret

# Initialize Setup
starbucks_days1 = setup(starbucks_days, target = 'time_completed_viewed', session_id = 123, log_experiment = True, experiment_name = 'days1')

但是得到一个错误

ValueError: y 中人口最少的类只有 1 个成员,太少了。任何类的最小组数不能少于 2 个。

这个 GitHub 问题给出了一些提示

我检查了一些参数

type(starbucks_days)
pandas.core.frame.DataFrame

starbucks_days['time_completed_viewed'].value_counts()
6.000000      1682
12.000000     1503
18.000000     1318
24.000000     1212
174.000000    1068
          ... 
444.107530       1
226.213225       1
411.947513       1
236.001744       1
394.722944       1
Name: time_completed_viewed, Length: 3572, dtype: int64

任何提示我错过了什么?正如我所说,PyCaret 可以很好地处理简单的 csv 文件,这些文件没有过采样。

标签: pythonpandaspycaret

解决方案


在您的导入中,您在导入classification后导入regression了覆盖环境中的模块。

这似乎是一个回归问题(连续值)。您不需要导入classification.

从您的代码中删除这一行,它应该可以正常工作:

from pycaret.classification import *

推荐阅读