`ValueError:y中人口最少的类只有1个成员,在PyCaret中太少了

问题描述

与PyCaret合作时遇到问题。以前我没有任何问题。

但是当我使用pandasthis question对数据进行过采样并保存时,它开始了。

文件here

然后我在单独的笔记本中读取文件

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。

This GitHub issue gives some hints

我检查了一些参数

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文件配合使用,而不会过采样。

解决方法

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

这似乎是一个回归问题(连续值)。您无需导入from pycaret.classification import *

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

body {
    margin: 0;
    height: 100%;
    background: linear-gradient(-90deg,rgba(0,.05) 1px,transparent 1px),linear-gradient(rgba(0,linear-gradient(-90deg,.04) 1px,linear-gradient(transparent 3px,#f2f2f2 3px,#f2f2f2 78px,transparent 78px),#aaa 1px,transparent 3px,linear-gradient(#aaa 1px,#f2f2f2;
    background-size: 4px 4px,4px 4px,80px 80px,80px 80px;
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...