24 import daal.algorithms.pca
as pca
25 import daal.algorithms.pca.quality_metric_set
as quality_metric_set
26 from daal.algorithms.pca.quality_metric
import explained_variance
27 from daal.data_management
import (
28 DataSourceIface, FileDataSource, HomogenNumericTable, MergedNumericTable,
29 NumericTableIface, BlockDescriptor, readWrite
32 utils_folder = os.path.realpath(os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
33 if utils_folder
not in sys.path:
34 sys.path.insert(0, utils_folder)
35 from utils
import printNumericTable
37 datasetFileName = os.path.join(
'..',
'data',
'batch',
'pca_normalized.csv')
48 dataSource = FileDataSource(
50 DataSourceIface.doAllocateNumericTable,
51 DataSourceIface.doDictionaryFromContext
55 dataSource.loadDataBlock(nVectors)
58 algorithm = pca.Batch(method=pca.svdDense)
61 algorithm.input.setDataset(pca.data, dataSource.getNumericTable())
64 result = algorithm.compute()
65 eigenData = result.get(pca.eigenvalues)
71 qualityMetricSet = quality_metric_set.Batch(nComponents)
72 explainedVariances = explained_variance.Input.downCast(qualityMetricSet.getInputDataCollection().getInput(quality_metric_set.explainedVariancesMetrics))
73 explainedVariances.setInput(explained_variance.eigenvalues, eigenData)
76 qualityMetricSet.compute()
79 qmsResult = qualityMetricSet.getResultCollection()
82 print (
"Quality metrics for PCA")
83 result = explained_variance.Result.downCast(qmsResult.getResult(quality_metric_set.explainedVariancesMetrics))
84 printNumericTable(result.getResult(explained_variance.explainedVariances),
"Explained variances:")
85 printNumericTable(result.getResult(explained_variance.explainedVariancesRatios),
"Explained variances ratios:")
86 printNumericTable(result.getResult(explained_variance.noiseVariance),
"Noise variance:")
88 if __name__ ==
"__main__":