noparama  v0.0.1
Nonparametric Bayesian models
np_triadic_algorithm.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <random>
4 
5 #include <statistics/distribution.h>
6 #include <membertrix.h>
8 #include <statistics/dirichlet.h>
9 #include <np_statistics.h>
10 
16  private:
18  std::default_random_engine _generator;
19 
21  distribution_t & _likelihood;
22 
24  split_method_t _split_method;
25 
30  dirichlet_process & _nonparametrics;
31 
33  membertrix * _cluster_matrix;
34 
38  double _alpha;
39 
40  double _beta;
41 
42  // verbosity
43  char _verbosity;
44 
45  // statistics
46  statistics_t _statistics;
47 
48  double ratioStateProb(bool split, const std::vector<int> &more, const std::vector<int> &less);
49 
50  double ratioProposal(bool split, int N, int C);
51 
52  double ratioR(bool split, int S, int T);
53 
54  void propose_merge(std::vector<data_ids_t> &pdata, const data_ids_t &data_ids,
55  cluster_ids_t &cluster_ids, split_method_t split_method);
56 
57  void propose_split(std::vector<data_ids_t> &pdata, const data_ids_t &data_ids,
58  cluster_ids_t &cluster_ids, cluster_t *new_cluster, split_method_t split_method);
59 
60  // split a single cluster
61  bool split(const data_ids_t & data_ids, cluster_ids_t & cluster_ids);
62 
63  // merge the given clusters
64  bool merge(const data_ids_t & data_ids, cluster_ids_t & clusters_ids);
65  public:
74  random_engine_t & generator,
75  distribution_t & likelihood,
76  dirichlet_process & nonparametrics
77  );
78 
85  void update(
86  membertrix & cluster_matrix,
87  const data_ids_t & data_ids
88  );
89 
93  void printStatistics();
94 };
void printStatistics()
Definition: np_triadic_algorithm.cpp:766
Definition: membertrix.h:52
Definition: np_cluster.h:27
Definition: pretty_print.hpp:112
split_method_t
Definition: np_statistics.h:5
void update(membertrix &cluster_matrix, const data_ids_t &data_ids)
Definition: np_triadic_algorithm.cpp:604
TriadicAlgorithm(random_engine_t &generator, distribution_t &likelihood, dirichlet_process &nonparametrics)
Definition: np_triadic_algorithm.cpp:17
Definition: np_statistics.h:20
Definition: np_update_cluster_population.h:13
Definition: np_triadic_algorithm.h:15