Как я могу построить одномерную кластеризацию k-средних в Python? - PullRequest
0 голосов
/ 29 марта 2020

Я изучаю различные способы кластеризации многомерных данных. В одном методе я применяю k-means для своих переменных (ниже: Recency) индивидуально и упорядочив кластер в соответствии со средним значением переменной в этом кластере.

def order_cluster(cluster_field_name, target_field_name,df,ascending):
    new_cluster_field_name = 'new_' + cluster_field_name
    df_new = df.groupby(cluster_field_name)[target_field_name].mean().reset_index()
    df_new = df_new.sort_values(by=target_field_name,ascending=ascending).reset_index(drop=True)
    df_new['index'] = df_new.index
    df_final = pd.merge(df,df_new[[cluster_field_name,'index']], on=cluster_field_name)
    df_final = df_final.drop([cluster_field_name],axis=1)
    df_final = df_final.rename(columns={"index":cluster_field_name})
    return df_final

kmeans = KMeans(n_clusters=7,random_state=0)
tx_user['RecencyCluster'] = kmeans.fit_predict(tx_user[['Recency']])
tx_user = order_cluster('RecencyCluster', 'Recency',tx_user,False)

Я хочу построить свои кластеры, чтобы увидеть как кластеры разного размера группируют данные, но я не знаю, как я могу сделать это с одним измерением. Любая помощь будет оценена. Спасибо

...