Я пробовал это, но я получаю ту же ошибку. Это работает для вас?
ользуюKMeans
кластеризовать три набора данных временных рядов с различными характеристиками. По причинам воспроизводимости, я делюсь даннымиВот.
Вот мой код
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
protocols = {}
types = {"data1": "data1.csv", "data2": "data2.csv", "data3": "data3.csv"}
for protname, fname in types.items():
col_time,col_window = np.loadtxt(fname,delimiter=',').T
trailing_window = col_window[:-1] # "past" values at a given index
leading_window = col_window[1:] # "current values at a given index
decreasing_inds = np.where(leading_window < trailing_window)[0]
quotient = leading_window[decreasing_inds]/trailing_window[decreasing_inds]
quotient_times = col_time[decreasing_inds]
protocols[protname] = {
"col_time": col_time,
"col_window": col_window,
"quotient_times": quotient_times,
"quotient": quotient,
}
k_means = KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,
n_clusters=3, n_init=10, n_jobs=None, precompute_distances='auto',
random_state=0, tol=0.0001, verbose=0)
k_means.fit(quotient.reshape(-1,1))
Таким образом, учитывая новую точку данных (сquotient
а такжеquotient_times
), Я хочу знать, какиеcluster
оно принадлежит построению каждого набора данных, объединяющего эти две преобразованные функцииquotient
а такжеquotient_times
с участиемKMeans
.
k_means.labels_
дает этот выводarray([1, 1, 0, 1, 2, 1, 0, 0, 2, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0], dtype=int32)
Наконец, я хочу визуализировать кластеры, используяplt.plot(k_means, ".",color="blue")
но я получаю эту ошибку:TypeError: float() argument must be a string or a number, not 'KMeans'
, Как мы строимKMeans
кластеры?