diff --git a/bob/bio/base/algorithm/PLDA.py b/bob/bio/base/algorithm/PLDA.py
index a561f43dc2d34dd91d5f95d0c50833383d780d43..21f29753ccede4abb2fc267d3333df4ccd4d3362 100644
--- a/bob/bio/base/algorithm/PLDA.py
+++ b/bob/bio/base/algorithm/PLDA.py
@@ -77,8 +77,18 @@ class PLDA (Algorithm):
 
     logger.info("  -> Training LinearMachine using PCA ")
     trainer = bob.learn.linear.PCATrainer()
-    machine, _ = trainer.train(data)
+    machine, eigen_values = trainer.train(data)
+
+    if isinstance(self.subspace_dimension_pca, float):
+      cummulated = numpy.cumsum(eigen_values) / numpy.sum(eigen_values)
+      for index in range(len(cummulated)):
+        if cummulated[index] > self.subspace_dimension_pca:
+          self.subspace_dimension_pca = index
+          break
+      self.subspace_dimension_pca = index
+
     # limit number of pcs
+    logger.info("  -> limiting PCA subspace to %d dimensions", self.subspace_dimension_pca)
     machine.resize(machine.shape[0], self.subspace_dimension_pca)
     return machine
 
diff --git a/bob/bio/base/config/algorithm/pca_plda.py b/bob/bio/base/config/algorithm/pca_plda.py
index 2ff3a8e61f384b2af0020bfe52268d0d6d5b08ed..9166e073361dd3c77f2bd874139ddedb40a702c6 100644
--- a/bob/bio/base/config/algorithm/pca_plda.py
+++ b/bob/bio/base/config/algorithm/pca_plda.py
@@ -5,5 +5,5 @@ import bob.bio.base
 algorithm = bob.bio.base.algorithm.PLDA(
     subspace_dimension_of_f = 16, # Size of subspace F
     subspace_dimension_of_g = 16, # Size of subspace G
-    subspace_dimension_pca = 150   # Size of the PCA subspace
+    subspace_dimension_pca = 0.9  # Percentage of PCA variance
 )