def main():
    test = False
    heuristic = 'Centroid'
    reader = DataReader()
    data = reader.loadData()
    dataArray = reader.getDataArray()
    if test == True:
        clusters = [
            Cluster(dataPoint, data[dataPoint])
            for dataPoint in list(data.keys())[:5]
        ]
    else:
        clusters = [
            Cluster(dataPoint, data[dataPoint])
            for dataPoint in list(data.keys())[:]
        ]
    Cluster.generateInitialDistanceMatrix(test)
    Uni = UnionTracker(len(clusters))
    # print('')
    iteration = 0
    while (Cluster.currentClusterCount() > 1):
        clsA, clsB, dist = Cluster.findMinDistance()
        mergedRC = min(clsA, clsB)
        toDelete = max(clsA, clsB)
        newIDm, newIDd, pts, factor = Cluster.mergeSimilarClusters(
            mergedRC, toDelete, iteration, dist, heuristic=heuristic)
        Uni.union(newIDd, newIDm, dist, pts, iteration)
        iteration += 1

    labels = list(data.keys())
    drawDendrogram(Uni, labels, heuristic)
Ejemplo n.º 2
0
def main():
    test = False
    # heuristic = 'Centroid'
    # heuristic = 'Min'
    # heuristic = 'Max'
    # heuristic = parser2()
    parser = argparse.ArgumentParser()
    parser.add_argument("echo",
                        help="Please give arguments as 'Centroid','Min','Max'")
    args = parser.parse_args()
    heuristic = args.echo
    reader = DataReader()
    data = reader.loadData()
    dataArray = reader.getDataArray()
    if test == True:
        clusters = [
            Cluster(dataPoint, data[dataPoint])
            for dataPoint in list(data.keys())[:5]
        ]
    else:
        clusters = [
            Cluster(dataPoint, data[dataPoint])
            for dataPoint in list(data.keys())[:]
        ]
    Cluster.generateInitialDistanceMatrix(test)
    Uni = UnionTracker(len(clusters))
    print('')
    iteration = 0
    while (Cluster.currentClusterCount() > 1):
        clsA, clsB, dist = Cluster.findMinDistance()
        mergedRC = min(clsA, clsB)
        toDelete = max(clsA, clsB)
        newIDm, newIDd, pts, factor = Cluster.mergeSimilarClusters(
            mergedRC, toDelete, iteration, dist, heuristic=heuristic)
        Uni.union(newIDd, newIDm, dist, pts, iteration)
        iteration += 1

    labels = list(data.keys())
    # print(len(linkage_matrix))
    print("Clustering Done!!")
    drawDendrogram(Uni, labels, heuristic)
    print("Output file stored in data/results")