pandas - scikit learn 的训练-测试拆分导致训练数据中只有一个唯一值的特征
问题描述
我正在尝试训练多元线性回归模型。我有一个名为“main”的数据集。该数据集中的分类变量很少。我对分类变量进行了虚拟化。假设虚拟化后得到的列是A、B、C、D等。现在,当我尝试在这个主数据集上运行训练测试拆分时,由此获得的训练数据集在这些列之一中只有值 0。我该如何克服这个问题。
我正在使用的代码是:
对于训练测试拆分:
from sklearn.model_selection import train_test_split
np.random.seed(0)
df_train, df_test = train_test_split(main, train_size = 0.7, test_size = 0.3, random_state = 100)
在运行以下代码时:
main.columns[main.nunique() == 1]
结果是:Index([], dtype='object')
并且在为火车数据运行以下代码时:
df_train.columns[df_train.nunique() == 1]
结果是:Index(['A', 'D', 'S'], dtype='object')
我希望生成的火车集包含具有所有值组合的特征。但是,这种拆分在某些功能中只给了我一个值
编辑:我检查了这些列中的唯一值,这些列高度不平衡,只有一个值出现在正例中。我尝试分层,它至少需要两排正类。许多列都是这种情况。所以我不能在训练数据集中单独包含这些列,因为它需要为所有列编写代码。我希望这能自动完成。
解决方案
您是否尝试过更改 random_state 值?
推荐阅读
- javascript - 删除地图函数中的重复项
- sql - 日期窗口功能
- python - Python中的Self语法错误:无效的语法,字符串的属性不存在?
- c++ - 声明指向多维数组的指针并在类中分配数组
- spring - 弹簧提供的组件有哪些?
- 64-bit - 运行 vulkaninfo 返回错误:vulkaninfo.h:477: failed with ERROR_INITIALIZATION_FAILED
- node.js - discord.js 从用户 ID 中查找最后一条消息的日期?
- python - 字符串替换将结果转换为整数python
- .net - Dotnet 和 Azure 事件中心:按位置检索事件
- javascript - 将 N-API 对象读入 C++ 原语