在应用sklearn时保持熊猫索引



>我有一个数据集,它有一个日期时间索引,我正在使用sklearn的PCA来减少维度的数量。

以下问题困扰着我 - PCA 是否会保留系列中点的顺序,以便我可以重用原始数据帧中的索引?

df = pd.DataFrame(...)
df2 = pca.fit_transform(df)
df2.index = df.index

此外,有没有比这样做更好(更安全)的方法?

虽然 PCA 删除了索引,但行的基本顺序仍然存在(请参阅 PCA* 的转换函数的实现)。所以让 df2.index = df1.index 是安全的

*fit_transform 与拟合然后变换相同。它们都不会对行重新排序。

此外,有没有比这样做更好(更安全)的方法?

你所做的是安全的。但更简洁的方法是将输出包装在DataFrameSeries中,并提供原始索引。在您的示例中:

df = pd.DataFrame(...)
df2 = pd.DataFrame(pca.fit_transform(df), index=df.index)

这在处理sci-kit learn模型中的预测向量(np.ndarrays)时非常有用:

y_pred = pd.Series(clf.predict(X_train), index=X_train.index)

当您有一个更复杂的索引(如 MultiIndex )时,这一点很重要。

相关内容

  • 没有找到相关文章

最新更新