Plot Clusters e classificação do KMeans para dados unidimensionais

Estou usandoKMeans para agrupar os três conjuntos de dados de séries temporais com características diferentes. Por motivos de reprodutibilidade, estou compartilhando os dadosAqu.

Aqui está meu código

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))

Desta forma, dado um novo ponto de dados (comquotient equotient_times), Quero saber qualclustero qual pertence, construindo cada conjunto de dados que empilha esses dois recursos transformadoquotient equotient_times comKMeans.

k_means.labels_ fornece essa saídaarray([1, 1, 0, 1, 2, 1, 0, 0, 2, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0], dtype=int32)

Finalmente, quero visualizar os clusters usandoplt.plot(k_means, ".",color="blue") mas estou recebendo este erro:TypeError: float() argument must be a string or a number, not 'KMeans'. Como plotamosKMeans clusters?

questionAnswers(2)

yourAnswerToTheQuestion