сериализовать массив массива kmeans.labels_ при использовании scikit learn - PullRequest
0 голосов
/ 04 марта 2020

Каждый раз, когда я выполняю программу k-mean. Я получил массив как [5 0 0 0 4 4 2 2 1 1 1 3 3 0 0 0 0 4 2 1 3 0 0 0 0 0 5 0 0 4 2 1 3 0 0 0 5 0 0 4 2 1 3 0 0 0 0 0 4 2 1 3 0 0 0 2 3].

При следующем выполнении я получу [1 2 2 2 4 4 5 5 0 0 0 3 3 2 2 2 2 4 5 0 3 2 2 2 2 2 2 2 4 5 0 3 2 2 2 1 2 2 4 5 0 3 2 2 2 2 2 4 5 0 3 2 2 2 5 3].

Я хочу метку первой категории из них будет 0, а второй - 1. подобно [0 1 1 1 2 2 3 3 4 4 4 5 5 1 1 1 1 2 3 4 5 1 1 1 1 1 0 1 1 2 3 4 5 1 1 1 0 1 1 2 3 4 5 1 1 1 1 1 2 3 4 5 1 1 1 3 5]

сделать кто-нибудь знает об алгоритме, чтобы сделать это.

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Огромное спасибо. Я использую kmeans, чтобы написать форму Excel с координатами текста. Я принимаю координаты как отношения с Kmeans. Сериализация имеет значение, когда я пишу текст в столбец с исходной структурой формы. Я также использую способ dict ().

SerialCount=0
ddiicctt={}
for ele in labelnumpyArray:
    print(ele)
    if ele not in ddiicctt:
        ddiicctt[ele]=SerialCount
        SerialCount+=1
print(ddiicctt)   
0 голосов
/ 04 марта 2020

Не знаю, зачем этого делать, потому что все группы взаимозаменяемы, но если вам это действительно нужно, вот способ:

import numpy as np
import pandas as pd

groups = np.array([1, 2, 2, 2, 4, 4, 5, 5, 0, 0, 0, 3, 3, 2, 2, 2, 2, 4, 5, 0, 3, 2, 2, 2, 2, 2, 2, 2, 4, 5, 0, 3, 2, 2, 2, 1, 2, 2, 4, 5, 0, 3, 2, 2, 2, 2, 2, 4, 5, 0, 3, 2, 2, 2, 5, 3])

Сначала получите порядок появления значений в группах: появляется 1 сначала, затем 2, затем 4 et c

groups_in_order = pd.unique(groups)
# array([1, 2, 4, 5, 0, 3]) 

Заказать этот новый массив: 0 появляется в индексе 4, 1 в индексе 0 et c

right_order = np.argsort(groups_in_order)
# array([4, 0, 1, 5, 2, 3])

Наконец, измените порядок group с использованием right_order и пониманием списка

[ right_order[i] for i in groups]

#[0, 1, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5,
# 5, 1, 1, 1, 1, 2, 3, 4, 5, 1, 1, 1,
# 1, 1, 1, 1, 2, 3, 4, 5, 1, 1, 1, 0,
# 1, 1, 2, 3, 4, 5, 1, 1, 1, 1, 1, 2,
# 3, 4, 5, 1, 1, 1, 3, 5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...