MNE-CPP  0.1.9
A Framework for Electrophysiology
kmeans.h
Go to the documentation of this file.
1 //=============================================================================================================
36 #ifndef KMEANS_H
37 #define KMEANS_H
38 
39 //=============================================================================================================
40 // INCLUDES
41 //=============================================================================================================
42 
43 #include "utils_global.h"
44 
45 //=============================================================================================================
46 // QT INCLUDES
47 //=============================================================================================================
48 
49 #include <QString>
50 #include <QSharedPointer>
51 
52 //=============================================================================================================
53 // EIGEN INCLUDES
54 //=============================================================================================================
55 
56 #include <Eigen/Core>
57 
58 //=============================================================================================================
59 // DEFINE NAMESPACE MNELIB
60 //=============================================================================================================
61 
62 namespace UTILSLIB
63 {
64 
65 //=============================================================================================================
72 {
73 public:
74  typedef QSharedPointer<KMeans> SPtr;
75  typedef QSharedPointer<const KMeans> ConstSPtr;
77  //distance {'sqeuclidean','cityblock','cosine','correlation','hamming'};
78  //startNames = {'uniform','sample','cluster'};
79  //emptyactNames = {'error','drop','singleton'};
80 
81  //=========================================================================================================
92  explicit KMeans(QString distance = QString("sqeuclidean") ,
93  QString start = QString("sample"),
94  qint32 replicates = 1,
95  QString emptyact = QString("error"),
96  bool online = true,
97  qint32 maxit = 100);
98 
99  //=========================================================================================================
110  bool calculate( Eigen::MatrixXd X,
111  qint32 kClusters,
112  Eigen::VectorXi& idx,
113  Eigen::MatrixXd& C,
114  Eigen::VectorXd& sumD,
115  Eigen::MatrixXd& D);
116 
117 private:
118  //=========================================================================================================
127  Eigen::MatrixXd distfun(const Eigen::MatrixXd& X,
128  Eigen::MatrixXd& C);//, qint32 iter);
129 
130  //=========================================================================================================
140  bool batchUpdate(const Eigen::MatrixXd& X,
141  Eigen::MatrixXd& C,
142  Eigen::VectorXi& idx);
143 
144  //=========================================================================================================
154  void gcentroids(const Eigen::MatrixXd& X,
155  const Eigen::VectorXi& index,
156  const Eigen::VectorXi& clusts,
157  Eigen::MatrixXd& centroids,
158  Eigen::VectorXi& counts);
159 
160  //=========================================================================================================
170  bool onlineUpdate(const Eigen::MatrixXd& X,
171  Eigen::MatrixXd& C,
172  Eigen::VectorXi& idx);
173 
174  //=========================================================================================================
183  double unifrnd(double a, double b);
184 
185  QString m_sDistance;
186  QString m_sStart;
187  qint32 m_iReps;
188  QString m_sEmptyact;
189  qint32 m_iMaxit;
190  bool m_bOnline;
192  qint32 emptyErrCnt;
194  qint32 iter;
195  qint32 k;
196  qint32 n;
197  qint32 p;
199  Eigen::MatrixXd Del;
200  Eigen::VectorXd d;
201  Eigen::VectorXi m;
203  double totsumD;
205  double prevtotsumD;
207  Eigen::VectorXi previdx;
208 };
209 } // NAMESPACE
210 
211 #endif // KMEANS_H
utils library export/import macros.
K-Means Clustering.
Definition: kmeans.h:71
QSharedPointer< KMeans > SPtr
Definition: kmeans.h:74
#define UTILSSHARED_EXPORT
Definition: utils_global.h:58
QSharedPointer< const KMeans > ConstSPtr
Definition: kmeans.h:75