Нужно ли извлекать векторы функций из MNIST перед использованием Kmeans? - PullRequest
0 голосов
/ 04 июня 2019

Я тренируюсь с MNIST по sklearn.cluster.KMeans.

Интуитивно, я просто подгоняю тренировочные данные к функции sklearn.Но у меня довольно низкая точность.Мне интересно, какой шаг я пропустил.Должен ли я вначале извлекать характерные векторы с помощью PCA?Или я должен поменять на n_clusters?

from sklearn import cluster
from sklearn.metrics import accuracy_score

clf = cluster.KMeans(init='k-means++', n_clusters=10, random_state=42)

clf.fit(X_train)

y_pred=clf.predict(X_test)

print(accuracy_score(y_test, y_pred))

Я получил плохой 0.137 в результате.Любая рекомендация?Спасибо!

Ответы [ 2 ]

2 голосов
/ 04 июня 2019

Как вы передаете изображения в? Пиксели сглажены или сохранены в формате 2d? Пиксели нормализуются к 0-1?

Поскольку вы запускаете кластеризацию, я бы советовал против PCA независимо от этого и вместо этого выбрал бы T-SNE, который хранит информацию о соседстве, но вы должны не делать это перед запуском K-Means.

Лучший способ отладки - посмотреть, что ваша подходящая модель предсказывает как кластеры. Вы можете увидеть пример здесь: https://scikit -learn.org / stable / auto_examples / cluster / plot_kmeans_digits.html

С помощью этой информации вы можете понять, где могут быть ошибки. Удачи!


Добавление примечания: K-Means также, вероятно, не самая лучшая модель для ваших целей. Лучше всего для неконтролируемых контекстов кластеризовать данные. Принимая во внимание, что MNIST является классификационным вариантом использования. KNN был бы лучшим вариантом, позволяя вам экспериментировать с соседями и тому подобным.

Вот пример, который я создал с помощью KNN: https://gist.github.com/andrew-x/0bb997b129647f3a7b7c0907b7e836fc

0 голосов
/ 05 июня 2019

Если я что-то упустил: вы сравниваете метки кластеризации, которые произвольно пронумерованы 0-9, с метками, которые произвольно нумеруются 0-9. 0 в вашей кластеризации могут не оказаться в кластере с номером 0, но это сравнение, которое вы делаете. Из-за этого результаты кластеризации оцениваются по-разному. Некоторые варианты получения правильной оценки:

...