change model
This commit is contained in:
parent
3033177e9e
commit
67229fd7a9
@ -73,13 +73,13 @@ inline size_t GetCluster(const Matrix ¢roids,
|
|||||||
double dmin = Cos(centroids[0], v);
|
double dmin = Cos(centroids[0], v);
|
||||||
for (size_t k = 1; k < centroids.nrow; ++k) {
|
for (size_t k = 1; k < centroids.nrow; ++k) {
|
||||||
double dist = Cos(centroids[k], v);
|
double dist = Cos(centroids[k], v);
|
||||||
if (dist < dmin) {
|
if (dist > dmin) {
|
||||||
dmin = dist; imin = k;
|
dmin = dist; imin = k;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return imin;
|
return imin;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
if (argc < 5) {
|
if (argc < 5) {
|
||||||
printf("Usage: <data_dir> num_cluster max_iter <out_model>\n");
|
printf("Usage: <data_dir> num_cluster max_iter <out_model>\n");
|
||||||
@ -116,9 +116,11 @@ int main(int argc, char *argv[]) {
|
|||||||
for (size_t i = 0; i < ndata; ++i) {
|
for (size_t i = 0; i < ndata; ++i) {
|
||||||
SparseMat::Vector v = data[i];
|
SparseMat::Vector v = data[i];
|
||||||
size_t k = GetCluster(model.centroids, v);
|
size_t k = GetCluster(model.centroids, v);
|
||||||
|
// temp[k] += v
|
||||||
for (size_t j = 0; j < v.length; ++j) {
|
for (size_t j = 0; j < v.length; ++j) {
|
||||||
temp[k][v[j].findex] += v[j].fvalue;
|
temp[k][v[j].findex] += v[j].fvalue;
|
||||||
}
|
}
|
||||||
|
// use last column to record counts
|
||||||
temp[k][num_feat] += 1.0f;
|
temp[k][num_feat] += 1.0f;
|
||||||
}
|
}
|
||||||
// call allreduce
|
// call allreduce
|
||||||
@ -126,6 +128,7 @@ int main(int argc, char *argv[]) {
|
|||||||
// set number
|
// set number
|
||||||
for (int k = 0; k < num_cluster; ++k) {
|
for (int k = 0; k < num_cluster; ++k) {
|
||||||
float cnt = temp[k][num_feat];
|
float cnt = temp[k][num_feat];
|
||||||
|
utils::Check(cnt != 0.0f, "get zero sized cluster");
|
||||||
for (unsigned i = 0; i < num_feat; ++i) {
|
for (unsigned i = 0; i < num_feat; ++i) {
|
||||||
model.centroids[k][i] = temp[k][i] / cnt;
|
model.centroids[k][i] = temp[k][i] / cnt;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user