gpt4 book ai didi

python - 如何在 scikit-learn 中进行预处理后保留数据帧的列标题

转载 作者:IT老高 更新时间:2023-10-28 22:00:47 27 4
gpt4 key购买 nike

我有一个 Pandas 数据框,其中包含一些行和列。每列都有一个标题。现在只要我继续在 pandas 中进行数据操作操作,我的变量 header 就会被保留。但是,如果我尝试使用 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

以上基本就是pandas数据框了。现在,当我在此数据框上执行此操作时,它将去除列标题。

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 中进行预处理后保留数据帧的列标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29586323/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com