示例#1
0
def get_kmedoids(df, dist_matrix, num_clusters):

    clusterid, error, nfound = Cluster.kmedoids(dist_matrix, num_clusters)
    df = df.reset_index()
    df['cluster_id'] = pd.DataFrame(data=clusterid)

    return df
示例#2
0
def get_kmedoids(input_points, num_clusters):

    """
    df = pd.read_csv(fname)
    x = df.iloc[:, 0]
    y = df.iloc[:, 1]
    inputs = []
    for row in range(len(df)):
        inputs.append((df.iloc[row, 0], df.iloc[row, 1]))
    """

    inputs = input_points

    google_key = "AIzaSyBIrorNpUJ_RyaxZ-8PxC0ZXZ818hRc5hM"

    maps = googlemaps.Client(key=google_key)

    # inputs = inputs[:5]  # for testing
    dist_matrix = tmo.get_dist_matrix(inputs, maps)
    clusterid, error, nfound = Cluster.kmedoids(array(dist_matrix), nclusters=num_clusters)

    # calculate cluster centroid
    clusterid_set = set(clusterid)
    centroids_dict = {}
    centroids_arr = []
    for itm in clusterid_set:
        k = itm
        val = inputs[itm]
        centroids_dict[k] = val
        centroids_arr.append(val)

    # a,b = Cluster.clustercentroids(clusterid=clusterid)


    centroids_arr = np.array(map(np.array, centroids_arr))

    # convert dist_matrix to a dataframe
    yard_index = ['turf'+str(i) for i in range(1, len(inputs)+1)]
    turf_index = ['turf'+str(i) for i in range(1, len(inputs)+1)]
    dist_mat = array(dist_matrix)
    df_dist_matr = pd.DataFrame(data=dist_mat[0:,0:],
                 index=yard_index,
                columns=turf_index)

    return centroids_arr, df_dist_matr
示例#3
0
kmeans1 = KMeans(n_clusters=5, random_state=0).fit(dist_dot_product)
kmeans2 = KMeans(n_clusters=5, random_state=0).fit(general_dot_product)
image_kmeans_dot = np.zeros((ys[1] - ys[0], xs[1] - xs[0]))
image_kmeans_pixel = np.zeros((ys[1] - ys[0], xs[1] - xs[0]))
print('Transforming in real coordinates...')
for i in ids:
    image_kmeans_dot[parser.coordinates[i][1] -
                     ys[0]][parser.coordinates[i][0] -
                            xs[1]] = kmeans1.labels_[ids.index(i)]
    image_kmeans_pixel[parser.coordinates[i][1] -
                       ys[0]][parser.coordinates[i][0] -
                              xs[1]] = kmeans2.labels_[ids.index(i)]

print('Kmedoid clustering...')
kmedoid_dot = Cluster.kmedoids(dist_dot_product,
                               nclusters=5,
                               npass=5,
                               initialid=None)  #Distance Matrix!!!
kmedoid_pixel = Cluster.kmedoids(general_dot_product,
                                 nclusters=5,
                                 npass=5,
                                 initialid=None)  #Distance Matrix!!!
image_kmedoid_dot = np.zeros((ys[1] - ys[0], xs[1] - xs[0]))
image_kmedoid_pixel = np.zeros((ys[1] - ys[0], xs[1] - xs[0]))
for i in ids:
    image_kmedoid_dot[parser.coordinates[i][1] -
                      ys[0]][parser.coordinates[i][0] -
                             xs[1]] = kmedoid_dot[0][ids.index(i)]
    image_kmedoid_pixel[parser.coordinates[i][1] -
                        ys[0]][parser.coordinates[i][0] -
                               xs[1]] = kmedoid_pixel[0][ids.index(i)]