Python 3.x 如何在H2O上使用拟合和变换进行PCA

Python 3.x 如何在H2O上使用拟合和变换进行PCA,python-3.x,pca,h2o,Python 3.x,Pca,H2o,我想在H2O上使用PCA。在sklearn中,我们可以在训练集上应用拟合,然后在测试集上应用变换。在这里,我试图在H2O中遵循同样的逻辑。在常见问题中,它说: 使用h2o.prcomp建立PCA模型后,使用h2o.predict 对原始数据帧和主成分分析模型进行生成 降维表示。使用cbind添加预测值 从原始数据帧到 h2o的产量。预测。此时,您可以构建受监督的 新数据框架上的学习模型 基于此,我尝试了以下方法: from h2o.transforms.decomposition import

我想在H2O上使用PCA。在sklearn中,我们可以在训练集上应用拟合,然后在测试集上应用变换。在这里,我试图在H2O中遵循同样的逻辑。在常见问题中,它说:

使用h2o.prcomp建立PCA模型后,使用h2o.predict 对原始数据帧和主成分分析模型进行生成 降维表示。使用cbind添加预测值 从原始数据帧到 h2o的产量。预测。此时,您可以构建受监督的 新数据框架上的学习模型

基于此,我尝试了以下方法:

from h2o.transforms.decomposition import H2OPCA

trbb_pca = H2OPCA(k = 5, transform = "NORMALIZE", pca_method="GramSVD",
                   use_all_factor_levels=True, impute_missing=True,seed=24)

trbb_pca.train(x=trbb_cols, training_frame=train_h2o)

train_h2o_pca = train_h2o.cbind(trbb_pca.predict(train_h2o))
test_h2o_pca = test_h2o.cbind(trbb_pca.predict(test_h2o))

这是在列车上实现PCA和在H2O中测试集的方法吗?

简短回答:是。中有一个示例,为了清晰起见,请复制到此处:

In [25]: from h2o.transforms.decomposition import H2OPCA

In [26]: pca_decomp = H2OPCA(k=2, transform="NONE", pca_method="Power")

In [27]: pca_decomp.train(x=range(0,4), training_frame=iris_df)

pca Model Build Progress: [#######################################] 100%

In [28]: pca_decomp
Out[28]: Model Details
=============
H2OPCA :  Principal Component Analysis
Model Key:  PCA_model_python_1446220160417_10

Importance of components:
                        pc1      pc2
----------------------  -------  --------
Standard deviation      7.86058  1.45192
Proportion of Variance  0.96543  0.032938
Cumulative Proportion   0.96543  0.998368

ModelMetricsPCA: pca

**
Reported on train data.
**
MSE: NaN
RMSE: NaN

In [29]: pred = pca_decomp.predict(iris_df)

pca prediction progress: [#######################################] 100%

In [30]: pred.head() # Projection results
Out[30]:
    PC1      PC2
-------  -------
5.9122   2.30344
5.57208  1.97383
5.44648  2.09653
5.43602  1.87168
5.87507  2.32935
6.47699  2.32553
5.51543  2.07156
5.85042  2.14948
5.15851  1.77643
5.64458  1.99191
从技术上讲,在Python中使用PCA估计器有两种方法。旧方法位于这里h2o.transforms.decomposition.H2OPCA。几年前,我们重写了PythonAPI并做了一些改变,包括将PCA转换成一个合适的H2OEstimator,所以现在它也位于这里:h2o.estimators.PCA.H2OPrincipalComponentAnalysisEstimator。这两种方法都有效,但对于新代码,我们建议使用新的方法,因为它与其他H2O估计值一致

API是相同的,因此,尽管不是必需的,但如果您愿意,可以通过更改导入语句切换到新的API:

from h2o.transforms.decomposition import H2OPCA
致:


尽管这个评论可能是离题的。k是有限维的参数吗?如果是,为什么?当我执行PCA时,我想得到所有的特征值,然后自己决定保留多少。如何从H2O中的PCA估计器获取此信息?谢谢你的帮助
from h2o.estimators.pca import H2OPrincipalComponentAnalysisEstimator as H2OPCA