python - `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 个。
我检查了一些参数
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 *
推荐阅读
- python - 如何处理需要太多参数的函数?
- python - 从 FARM TextClassification 中提取概率和标签
- powershell - 如何使用 UTF-8 编码运行 ps1 脚本(从 Web 下载脚本)
- twitter-bootstrap - Bootstrap 4 Confirmation 不起作用,它有什么问题?
- java - 对学生记录的并行数组进行排序
- python - 如何将 github 存储库挂载为 google colab 中的当前目录文件夹?
- node.js - 如何在nodejs中创建一个使用用户名名称的目录
- javascript - 在尝试启动反应应用程序时,我面临以下错误并且它没有编译为什么?
- arrays - 根据每行的项目计数重复行并为重复行分配值
- bamboo - 有没有办法在 Bamboo 中触发子计划并传递版本号等信息?