我不是在C++又那麼先進,但我試圖進行聚類分析,如何返回C++中不同大小的矩陣數組?
數據,矢量<矢量<雙>> X,是M爲T,其中M功能和T的數據點,我試圖將特徵組合成集合,其中集合中的每個特徵之間的距離相關性高於特定閾值。 distCorrelation函數已經被定義。
set<vector<double>> clusterIndices(vector<vector<double>> &X, double threshold){
vector<double> feature[X.size()];
for(int i = 0; i < X.size(); i++){
for(int j = 0; j < X[0].size(); j++){
feature[i].push_back(X[i][j]);
}
}
vector<vector<double>> distCorrMatrix(X.size(), vector<double> (X.size()));
for (int i = 0; i < X.size(); i++){
for (int j = 0; j < X.size(); j++){
distCorrMatrix[i][j] = (distCorrelation(feature[i],feature[j]) >= threshold ? 1.0 : 0.0);
}
}
set<vector<double>> rows;
for (int i = 0; i < X.size(); i++){
vector<int> temp;
for (int j = 0; j < X.size(); j++){
if (distCorrMatrix[i][j] == 1){
temp.push_back(j);
}
}
rows.insert(temp);
}
return rows;
}
所以上面的代碼將產生具有相互高相關性的特徵組,但只會給出那些特徵的索引。也就是說,返回的行可以是(1,2,5),(3,7,8,10)...等等,其轉換爲(特徵[1],特徵[2],特徵[5]), (特徵[3],特徵[7],特徵[8],特徵[10])等等,其中特徵[i]表示數據矩陣的第i行。
問題是我不知道如何創建一個函數,將每個集合轉換爲矩陣並返回它們。
包含在'vector>'中的每個'vector '可以具有不同的大小。除此之外,你不清楚你在問什麼。 –
Peter
我會得到/做一個矩陣類型,然後你可以有一個矩陣類型的向量。 – NathanOliver
結果應該是什麼樣子?你需要一個單一的(2D)矩陣,並且想要返回一個矩陣數組(即一個三維數組 - 相似)?這似乎是可疑的... – axalis