Смесь Гауссаина Модель _ Scikit Learn _ Как подходить для единичных данных D? - PullRequest
0 голосов
/ 30 апреля 2019

Я начал работать с GMM в библиотеке Sklearn. У меня есть данные 1 D, как показано ниже

np.random.seed(2)
x = np.concatenate([np.random.normal(0, 2, 2000),
                    np.random.normal(5, 5, 2000),
                    np.random.normal(3, 0.5, 600)])

Я хотел бы использовать функцию sklearn GaussainMixture, чтобы соответствовать 4 гауссовой смеси. Итак, я попробовал

clf= GaussianMixture(n_components = 4, max_iter=500, random_state=3).fit(x)

Задача

Когда я запускаю приведенный выше код, я получаю сообщение об ошибке

Измените ваши данные, используя array.reshape (-1, 1), если ваши данные имеют один объект или array.reshape (1, -1), если он содержит один образец.

Мой след назад

Traceback (most recent call last):
  File "C:\Users\VW3ZTWS\PycharmProjects\Data_Collection_and_learnings\venv\lib\site-packages\IPython\core\interactiveshell.py", line 2869, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-44-7de666249812>", line 1, in <module>
    clf= GaussianMixture(n_components = 4, max_iter=500, random_state=3).fit(x)
  File "C:\Users\VW3ZTWS\PycharmProjects\Data_Collection_and_learnings\venv\lib\site-packages\sklearn\mixture\base.py", line 194, in fit
    self.fit_predict(X, y)
  File "C:\Users\VW3ZTWS\PycharmProjects\Data_Collection_and_learnings\venv\lib\site-packages\sklearn\mixture\base.py", line 220, in fit_predict
    X = _check_X(X, self.n_components, ensure_min_samples=2)
  File "C:\Users\VW3ZTWS\PycharmProjects\Data_Collection_and_learnings\venv\lib\site-packages\sklearn\mixture\base.py", line 55, in _check_X
    ensure_min_samples=ensure_min_samples)
  File "C:\Users\VW3ZTWS\PycharmProjects\Data_Collection_and_learnings\venv\lib\site-packages\sklearn\utils\validation.py", line 552, in check_array
    "if it contains a single sample.".format(array))
ValueError: Expected 2D array, got 1D array instead:
array=[-0.03338572  0.3163226  -1.94596018 ...  2.93448979  2.77931282
  3.28590084].

Вопрос

Могу ли я уместить GMM для данных 1 D? Я не уверен в совершенной ошибке, прошу уточнить -

1 Ответ

1 голос
/ 30 апреля 2019

То, что вы опубликовали, расскажет вам, как действовать:

Измените ваши данные либо с помощью array.reshape (-1, 1), если ваши данные имеют одну функцию или array.reshape (1, -1) если он содержит один образец.

Если ваш набор данных является 1D, он имеет одну особенность, поэтому:

x = x.reshape(-1, 1)

и остальной код должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...