我正在使用 sklearn 和凝聚聚类功能。我有一个混合数据,其中包括数字和名义数据列。我的名义列具有诸如“早上”、“下午”、“晚上”、“晚上”之类的值。如果我通过分配整数值(如 0、1、2、3)将我的名义数据转换为数字;欧几里得距离将计算为“夜晚”和“早晨”之间的 3,但是,1 应该作为距离的返回值。
X = pd.read_csv("mydata.csv", sep=",", header=0, encoding="utf-8")
X = StandardScaler().fit_transform(X)
print("n_samples: %d, n_features: %d" % X.shape)
km = AgglomerativeClustering(n_clusters=5, affinity='euclidean', linkage='average')
km.fit(X)
print("k = %d, Silhouette Coefficient: %0.3f" % (x,
metrics.silhouette_score(X, km.labels_, sample_size=None)))
这是我的代码。
如何在 sklearn 中自定义距离函数或将我的名义数据转换为数字?
阿波罗的战车
噜噜哒
相关分类