python – 如何在scikit-learn中预处理后保留数据框的列标题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 如何在scikit-learn中预处理后保留数据框的列标题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2291字,纯文字阅读大概需要4分钟。
内容图文
![python – 如何在scikit-learn中预处理后保留数据框的列标题](/upload/InfoBanner/zyjiaocheng/702/26c0c9c3a31e442b9caee29d459e25a0.jpg)
我有一个pandas数据框,有一些行和列.每列都有一个标题.现在,只要我继续在pandas中进行数据操作操作,我的变量头就会被保留.但是如果我尝试使用Sci-kit-learn lib的一些数据预处理功能,我最终会丢失所有标题,并且帧会转换为数字矩阵.
我理解为什么会发生这种情况,因为scikit-learn给出了一个numpy ndarray作为输出.而numpy ndarray只是矩阵不会有列名.
但事情就是这样.如果我在我的数据集上构建一些模型,即使在初始数据预处理和尝试某些模型之后,我可能还需要做一些更多的数据操作任务来运行其他模型以获得更好的拟合.无法访问列标题使得很难进行数据操作,因为我可能不知道特定变量的索引是什么,但是更容易记住变量名,甚至可以通过执行df.columns来查找.
如何克服这个?
EDIT1:使用示例数据快照进行编辑.
Pclass Sex Age SibSp Parch Fare Embarked
0 3 0 22 1 0 7.2500 1
1 1 1 38 1 0 71.2833 2
2 3 1 26 0 0 7.9250 1
3 1 1 35 1 0 53.1000 1
4 3 0 35 0 0 8.0500 1
5 3 0 NaN 0 0 8.4583 3
6 1 0 54 0 0 51.8625 1
7 3 0 2 3 1 21.0750 1
8 3 1 27 0 2 11.1333 1
9 2 1 14 1 0 30.0708 2
10 3 1 4 1 1 16.7000 1
11 1 1 58 0 0 26.5500 1
12 3 0 20 0 0 8.0500 1
13 3 0 39 1 5 31.2750 1
14 3 1 14 0 0 7.8542 1
15 2 1 55 0 0 16.0000 1
以上基本上是熊猫数据帧.现在当我在这个数据框上执行此操作时,它将剥离列标题.
from sklearn import preprocessing
X_imputed=preprocessing.Imputer().fit_transform(X_train)
X_imputed
新数据是numpy数组,因此列名被剥离.
array([[ 3. , 0. , 22. , ..., 0. ,
7.25 , 1. ],
[ 1. , 1. , 38. , ..., 0. ,
71.2833 , 2. ],
[ 3. , 1. , 26. , ..., 0. ,
7.925 , 1. ],
...,
[ 3. , 1. , 29.69911765, ..., 2. ,
23.45 , 1. ],
[ 1. , 0. , 26. , ..., 0. ,
30. , 2. ],
[ 3. , 0. , 32. , ..., 0. ,
7.75 , 3. ]])
所以我想在我的pandas数据框上进行一些数据操作时保留列名.
解决方法:
在大多数情况下,scikit-learn确实剥离了列标题,因此请稍后重新添加它们.在您的示例中,将X_imputed作为sklearn.preprocessing输出并将X_train作为原始数据帧,您可以将列标题重新打开:
X_imputed_df = pd.DataFrame(X_imputed, columns = X_train.columns)
内容总结
以上是互联网集市为您收集整理的python – 如何在scikit-learn中预处理后保留数据框的列标题全部内容,希望文章能够帮你解决python – 如何在scikit-learn中预处理后保留数据框的列标题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。