【发布时间】:2017-11-18 00:31:39
【问题描述】:
我的c++还不是很高级,但我正在尝试进行聚类分析,
数据,向量
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) ... 等转换为 (feature[1],feature[2],feature[5]) , (特征[3],特征[7],特征[8],特征[10]) ...等其中特征[i]代表数据矩阵的第i行。
问题是我不知道如何创建一个函数,将每个集合转换为矩阵并返回它们。
【问题讨论】:
-
vector<vector<double>>中包含的每个vector<double>可以有不同的大小。除此之外,不清楚你在问什么。 -
我会得到/制作一个矩阵类型,然后你就可以拥有该矩阵类型的向量。
-
结果应该是什么样的?您采用单个(2D)矩阵并想要返回一个矩阵数组(即一个类似 3 维数组)?这似乎很可疑......
-
他采用 2D 矩阵,例如 100 列和 3 行(3D 空间中的点)。它们分为三个集群,因此他想返回 3 个矩阵(40 列之一、25 列之一和 35 列之一)来表示集群。
标签: c++ function vector return return-type