【发布时间】:2023-03-24 13:24:01
【问题描述】:
我正在使用 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 中自定义距离函数或将我的标称数据转换为数字?
【问题讨论】:
-
可以使用自带的sklearn labelencoder吗?
-
你实际上想使用 OneHotEncoder。
标签: python scikit-learn cluster-analysis