Я использую функцию 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 или преобразовать мои номинальные данные в числовые?