Python: загрузка набора обучающих данных kmeans и его использование для прогнозирования нового набора данныхPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python: загрузка набора обучающих данных kmeans и его использование для прогнозирования нового набора данных

Сообщение Anonymous »

У меня есть огромный объем данных, на которых я хотел бы провести классификацию kmean. Набор данных настолько велик, что я не могу загрузить файлы в память.

Моя идея состоит в том, чтобы запустить классификацию для некоторой части набора данных, например, для обучающего набора данных, а затем по частям применить классификацию к остальной части набора данных.

Код: Выделить всё

import pandas as pd
import pickle
from sklearn.cluster import KMeans

frames = [pd.read_hdf(fin) for fin in ifiles]
data = pd.concat(frames, ignore_index=True, axis=0)
data.dropna(inplace=True)

k = 12
x  = pd.concat(data['A'], data['B'], data['C'], axis=1, keys=['A','B','C'])
model = KMeans(n_clusters=k, random_state=0, n_jobs = -2)
model.fit(x)

pickle.dump(model, open(filename, 'wb'))
x выглядит так:

Код: Выделить всё

array([[-2.26732099,  0.24895614,  2.34840191],
[-2.26732099,  0.22270912,  1.88942378],
[-1.99246557,  0.04154312,  2.63458941],
...,
[-4.29596287,  1.97036309, -0.22767511],
[-4.26055474,  1.72347591, -0.18185197],
[-4.15980382,  1.73176239, -0.30781225]])
Модель выглядит так:

Код: Выделить всё

KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,
n_clusters=12, n_init=10, n_jobs=-2, precompute_distances='auto',
random_state=0, tol=0.0001, verbose=0)
Диаграмма двух параметров модели с цветовой кодировкой модели выглядит следующим образом:
Изображение


Теперь я хочу загрузить модель и использовать ее для прогнозирования. В качестве тестового примера я загрузил те же данные (здесь не показаны) и пытаюсь спрогнозировать новый набор данных.

Код: Выделить всё

modelnew = pickle.load(open('test.pkl', 'rb'))
modelnew.predict(x)
Результат:
Изображение


Эти данные явно не кластеризуются. Что мне не хватает? Нужно ли мне каким-то образом исправить параметры модели?

Я попытался привести пример теста и набора данных поезда. Здесь тоже все идет не так. Мне явно чего-то не хватает:

Код: Выделить всё

## Splitting data in a test and train data set
sample_train, sample_test = train_test_split(x, test_size=0.50)

k = 12 ## Setting number of clusters
model = KMeans(n_clusters=k, random_state=0, n_jobs = -2) ## Kmeans model
train = model.fit(sample_train) ## Fitting the training data
model.predict(sample_test) # Predicting the test data

centroids =  model.cluster_centers_
labels = model.labels_

## Figures
cmap_model = np.array(['red', 'lime', 'black', 'green', 'orange', 'blue', 'gray', 'magenta', 'cyan', 'purple', 'pink', 'lightblue', 'brown', 'yellow'])
plt.figure()
plt.scatter(sample_train[:,0], sample_train[:,1], c=cmap_model[train.labels_], s=10, edgecolors='none')
plt.scatter(centroids[:, 0], centroids[:, 1], c=cmap_model,  marker = "x", s=150, linewidths = 5, zorder = 10)

plt.figure()
plt.scatter(sample_test[:,0], sample_test[:,1], c=cmap_model[labels], s=10, edgecolors='none')
plt.scatter(centroids[:, 0], centroids[:, 1], c=cmap_model,  marker = "x", s=150, linewidths = 5, zorder = 10)
plt.show()
Данные поезда:
Изображение
< /p>

Данные теста:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/430 ... ew-dataset
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»