Как уменьшить размеры новых данных / ввода после применения метода уменьшения размерности, такого как MCA - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть категорический тренировочный набор, подобный этому

col1   col2   col3   col4
 9      8      10     9
10      8       9     9
.....................

, и после того, как я уменьшил размеры, применив к нему MCA (Multiple Correspondance Analysis), я получил что-то вроде

dim1    dim2
0.857  -0.575
0.654   0.938
.............

Теперь мой вопрос заключается в том, как найти (dim1, dim2) новых данных, таких как эти, в качестве входных данных?

col1  col2   col3  col4
10     9       8     8

выходы MCA после выполнения на тренировочном наборе - это собственные значения, инерция и т. Д.

Мой код на python:

from sklearn.cluster import KMeans
import prince
data = pd.read_csv("data/training set.csv")
X = data.loc[:, 'OS.1':'DSA.1']
size = len(X)
X = X.values.tolist()

#...
#data preprocessing
#...

df = pd.DataFrame(X)
mca = prince.MCA(
               n_components=2,
               n_iter=3,
               copy=True,
               check_input=True,
               engine='auto',
               random_state=42
                )

mca = mca.fit(df)
X = mca.transform(df)

km = KMeans(n_clusters=3)
km.fit(X)

1. Я хочу получить ввод от пользователя 2. Обработать его перед выполнением уменьшения размеров с помощью MCA 3. Прогнозировать его кластер с помощью K означает

1 Ответ

0 голосов
/ 17 февраля 2019

Вам просто нужно сохранить ваш объект MCA mca живым, чтобы иметь возможность использовать его для преобразования новых входных данных.Для этого просто позвоните по номеру transform method on your new data

from sklearn.cluster import KMeans
import prince
data = pd.read_csv("data/training set.csv")
X = data.loc[:, 'OS.1':'DSA.1']
size = len(X)
X = X.values.tolist()

#...
#data preprocessing
#...

df = pd.DataFrame(X)
mca = prince.MCA(
               n_components=2,
               n_iter=3,
               copy=True,
               check_input=True,
               engine='auto',
               random_state=42
                )

mca = mca.fit(df)
X = mca.transform(df)

km = KMeans(n_clusters=3)
km.fit(X)

# New data into x_new
# 1. Preprocess x_new as you preprocessed x
# Reuse mca on x_new
df_new = pd.DataFrame(x_new)
X_new = mca.transform(df_new)

# predictions
km.predict(X_new)
...