在sklearn中使用DataFrame的一些问题(训练集与测试集列顺序问题)
来源:互联网 发布:python 全文搜索引擎 编辑:程序博客网 时间:2024/06/08 19:22
问题1 DataFrame能直接做训练集和测试集吗?
猜想
最近使用sklearn的模型的时候发现训练集可以直接传入pandas的DataFrame进行训练,而且进行预测的时候也可以直接传入DataFrame,我以为sklearn可以直接识别DataFrame中数据列的顺序,即使列的顺序是乱的也可以直接进行预测,于是做了个测试。
测试
这里训练集的x_train,测试集是x_test:
这个时候顺序是一样的,这个时候预测结果是2.6+:
然后把测试集的顺序乱一下:
这里把测试集中的列a和列c调换了一下位置,得出的结果是3.8+:
其实如果把列名乱填的话
结果也是3.8+:
所以说之前的想法是错误的
结论
如果想要往sklearn的模型中传入DataFrame的话,列名的顺序必须是一样的,应该是传入的时候调用的as_matrix()方法,直接传入的矩阵,列什么的sklearn并不会关心。
问题2 训练集和测试集列数一样但是顺序不同怎么办?
但是如果我的训练集和测试集都是DataFrame格式的,列数一样但是顺序不一样,想要放进sklearn里进行训练和预测,那该怎么办呢?
这个时候使用:
问题3 训练集的列数和测试集不一样怎么办?
还有一种情况是训练集的列数和测试集的不一样
像下面这个例子,训练集缺失了good_d,更多的的情况是缺很多列
训练集和测试集分别处理哑变量的情况下会出现这种问题,不知道大家是怎么解决的?
如果训练集中没有测试集中的列,是不是应该把测试集中对应的列删掉;
如果测试集中没有训练集中的列,通常这种情况是要把缺失的列补上并且填充一个0,那么怎么做呢?
我目前的解决方法是这样的,和解决问题2的方法类似。总感觉有点笨,不知道还有没有好的解决方案。
其他
DataFrame的filter方法是个选择特征列好方法,可以用正则表达式匹配需要选择的列,很好用。
- 在sklearn中使用DataFrame的一些问题(训练集与测试集列顺序问题)
- 在sklearn中使用DataFrame的一些问题
- 对sklearn训练结果进行保存(joblib或pickle或cPickle的使用问题记录)
- caffe训练中遇到的一些问题(持续更新......)
- TX1上使用Faster-RCNN训练自己的训练集遇到的问题与解决
- sklearn 使用过程中遇到的问题和解决方法
- python DataFrame 修改列的顺序
- pandas DataFrame 如何制定列的顺序(默认列名字典顺序)
- Sklearn-train_test_split随机划分训练集和测试集
- Sklearn-train_test_split随机划分训练集和测试集
- sklearn:随机划分训练集和测试集
- sklearn.model_selection.train_test_split随机划分训练集和测试集
- sklearn.model_selection.train_test_split随机划分训练集和测试集
- Sklearn-train_test_split随机划分训练集和测试集
- Sklearn工具包---train_test_split随机划分训练集和测试集
- Sklearn-train_test_split随机划分训练集和测试集
- Sklearn-train_test_split随机划分训练集和测试集
- 转:Sklearn-train_test_split随机划分训练集和测试集
- js原生代码实现数据双向绑定
- 堆和栈的区别(内存和数据结构)
- Leetcode 98. Validate Binary Search Tree (Medium) (cpp)
- 牛客网刷题之数据流中的中位数
- Java并发编程(Java Concurrency)(12)- Java 同步代码块(Java Synchronized Blocks)
- 在sklearn中使用DataFrame的一些问题(训练集与测试集列顺序问题)
- cmd下查看java字节码
- java 正则表达式 特殊构造(非捕获)理解 (2)
- CentOS6.6将/var移到新的分区
- 图的遍历——C语言
- Error: Expected resource of type id [ResourceType]的解决办法
- windows 连接Ubuntu 中HDFS的权限错误:Permission denied
- recyclerview禁止滑动
- python实现清理桌面的功能