Можем ли мы ранжировать кластеры K-средних или присваивать веса определенным кластерам? - PullRequest
2 голосов
/ 24 января 2020

Я работаю над задачей K-Means Clustering, и мне интересно, есть ли какой-нибудь способ сделать какое-то ранжирование кластеров, или, возможно, назначить определенные c веса некоторым конкретным c кластерам. Есть ли способ сделать это? Вот мой код.

from pylab import plot,show
from numpy import vstack,array
from numpy.random import rand
import numpy as np
from scipy.cluster.vq import kmeans,vq
import pandas as pd
import pandas_datareader as dr
from math import sqrt
from sklearn.cluster import KMeans
from matplotlib import pyplot as plt

df = pd.read_csv('C:\\my_path\\analytics.csv')

data = np.asarray([np.asarray(dataset['Rating']),np.asarray(dataset['Maturity']),np.asarray(dataset['Score']),np.asarray(dataset['Bin']),np.asarray(dataset['Price1']),np.asarray(dataset['Price2']),np.asarray(dataset['Price3'])]).T

centroids,_ = kmeans(data,1000)
idx,_ = vq(data,centroids)

details = [(name,cluster) for name, cluster in zip(dataset.Cusip,idx)]

Итак, я получаю свои «детали», я смотрю на них, и на данный момент все выглядит хорошо. Я в конечном итоге около 700 кластеров. Мне просто интересно, есть ли способ упорядочить эти кластеры, предполагая, что «Рейтинг» является наиболее важной функцией. Или, возможно, есть способ присвоить более высокий вес «Рейтингу». Я не уверен, что это имеет смысл на 100%. Я просто думаю о концепции и задаюсь вопросом, есть ли какое-то очевидное решение или, может быть, это просто глупость. Я могу легко считать записи в каждом кластере, но я не думаю, что это имеет какое-либо значение. Я гуглил это и не нашел ничего полезного.

1 Ответ

1 голос
/ 24 января 2020

Одна хитрость заключается в том, чтобы использовать функцию rating дважды или трижды, тогда она автоматически приобретает больший вес:

data = np.asarray([np.asarray(dataset['Rating']), np.asarray(dataset['Rating']), np.asarray(dataset['Maturity']),np.asarray(dataset['Score']),np.asarray(dataset['Bin']),np.asarray(dataset['Price1']),np.asarray(dataset['Price2']),np.asarray(dataset['Price3'])]).T

есть также настройки kmeans, но они не реализовано в python.

...