You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have been trying simple K-Means clustering, and always clusters into 1-cluster. Here is the data set to be clustered.
/**
* The data to be clustered.
*/
public static final double[][] DATA = { {2617.83}, {5885.6}, {1690.71}, {3162.3}, {2180.97},
{1913.49},{2493.73},{1341.28},{4972.91},{2098.54},{3645.07},{1554.69},{1483.03},{339.25},
{12153.81},{1082.09},{1266.5}
};
Note that, when you remove the last element {1266.5} or placed it in different position in the Data array, you get 2-clusters:
/**
* The data to be clustered.
*/
public static final double[][] DATA = { {2617.83}, {5885.6}, {1690.71}, {3162.3}, {2180.97},
{1913.49},{2493.73},{1341.28},{4972.91},{2098.54},{3645.07},{1554.69},{1483.03},{339.25},
{12153.81},{1082.09},{1266.5}
};
/**
* The main method.
* @param args Arguments are not used.
*/
public static void main(final String args[]) {
final BasicMLDataSet set = new BasicMLDataSet();
for (final double[] element : SimpleKMeans.DATA) {
set.add(new BasicMLData(element));
}
final KMeansClustering kmeans = new KMeansClustering(2, set);
kmeans.iteration(100);
//System.out.println("Final WCSS: " + kmeans.getWCSS());
// Display the cluster
int i = 1;
for (final MLCluster cluster : kmeans.getClusters()) {
System.out.println("*** Cluster " + (i++) + " ***");
final MLDataSet ds = cluster.createDataSet();
final MLDataPair pair = BasicMLDataPair.createPair(
ds.getInputSize(), ds.getIdealSize());
for (int j = 0; j < ds.getRecordCount(); j++) {
ds.getRecord(j, pair);
System.out.println(Arrays.toString(pair.getInputArray()));
}
}
}
}
The text was updated successfully, but these errors were encountered:
I have been trying simple K-Means clustering, and always clusters into 1-cluster. Here is the data set to be clustered.
/**
* The data to be clustered.
*/
public static final double[][] DATA = { {2617.83}, {5885.6}, {1690.71}, {3162.3}, {2180.97},
{1913.49},{2493.73},{1341.28},{4972.91},{2098.54},{3645.07},{1554.69},{1483.03},{339.25},
{12153.81},{1082.09},{1266.5}
};
Note that, when you remove the last element {1266.5} or placed it in different position in the Data array, you get 2-clusters:
*** Cluster 1 ***
[2617.83]
[1690.71]
[3162.3]
[2180.97]
[1913.49]
[2493.73]
[1341.28]
[2098.54]
[3645.07]
[1554.69]
[1483.03]
[339.25]
[1266.5]
[1082.09]
*** Cluster 2 ***
[5885.6]
[4972.91]
[12153.81]
Here is the SimpleKMeans example with a problematic data set, so that you can easily replicated the problem.
import java.util.Arrays;
import org.encog.ml.MLCluster;
import org.encog.ml.data.MLDataPair;
import org.encog.ml.data.MLDataSet;
import org.encog.ml.data.basic.BasicMLData;
import org.encog.ml.data.basic.BasicMLDataPair;
import org.encog.ml.data.basic.BasicMLDataSet;
import org.encog.ml.kmeans.KMeansClustering;
public class SimpleKMeans {
}
The text was updated successfully, but these errors were encountered: