Я использую алгоритм K означает, что для вычисления количества кластеров, необходимых для моих данных, а также для отображения результатов в точечной диаграмме. Проблема в том, что для этого алгоритма мне нужно использовать даты в качестве кодов, например 1572559240. После вычисления кластеров, как я могу построить значения дат, такие как 01/11/2019 вместо кода? Это фрагмент для построения.

X = df.iloc[:, [0, 8]].values  # time code and ch2o values

cluster_figure.add_trace(go.Scatter(x=X[y_kmeans == 1, 0], y=X[y_kmeans == 1, 1], mode='markers',
                                    marker=dict(color='blue'), name='Cluster 2'))

cluster_figure.add_trace(go.Scatter(x=X[y_kmeans == 2, 0], y=X[y_kmeans == 2, 1], mode='markers',
                                    marker=dict(color='green'), name='Cluster 3'))
cluster_figure.add_trace(go.Scatter(x=kmeans.cluster_centers_[:, 0], y=kmeans.cluster_centers_[:, 1], mode='markers',
                                    marker=dict(color='yellow'), name='Centroids'))


Вот ссылка на полный код: https://colab.research.google.com/drive/1zd22Pz-rjvDsmAtE5b5J8gE9DJysAo9v

0
iuliana iuliana 19 Дек 2019 в 12:01

1 ответ

Модуль datetime может справиться с этим -

from datetime import datetime
timestamp = 1576748381
date = datetime.fromtimestamp(timestamp)

Теперь вы можете отформатировать это с помощью конвертера дата-время в строку (например, date.strftime('%d/%m/%Y'). Вы можете добавить столбец к вашей df с датами в этом формате вдоль строк

df['date']=df.apply(lambda r:datetime.datetime.fromtimestamp(r[0]).strftime('%d/%m/%Y'),axis=1)

а затем использовать их для значений х вместо времени эпохи, например

cluster_figure.add_trace(go.Scatter(x=X[y_kmeans == 1, 9], y=X[y_kmeans == 1, 1], mode='markers',                                    marker=dict(color='blue'), name='Cluster 2'))

предполагая, что столбцы даты оказались столбцом № 9; из вашего определения X похоже, что столбцы 0-8 заполнены.

0
jeremy_rutman 19 Дек 2019 в 10:20