Гауссовский процесс с двумерным массивом объектов в качестве входа в Python - PullRequest
0 голосов
/ 07 июня 2018

Мне нужно реализовать GPR (гауссовскую регрессию процесса) в Python с использованием библиотеки обучения sci-kit.

Мой вход X имеет две особенности.Ex.X = [раса, ИМТ].И вывод - одно измерение y = [age_expectancy]

Я хочу использовать два ядра;RBF и Matern, так что RBF использует функцию «расы», в то время как Matern использует функцию «возраста».Я попробовал следующее:

X = np.matrix([[1.,2], [3.,4], [5.,1], [6.,5],[4, 7.],[ 9,8.], [1.,2], [3.,4], [5.,1], [6.,5],[4, 7.],[ 9,8.],[1.,2], [3.,4], [5.,1], [6.,5],[4, 7.],[ 9,8.]]).T


y=[84,  42, 47, 55,  25,  78, 52, 25, 75, 22,  45, 45, 88,  56, 77, 58,  48,  79]


kernel = R(X[0]) * M(X[1])

gp = GaussianProcessRegressor(kernel=kernel)


gp.fit(X, y)

Но это выдает ошибку 'ValueError: Найдены входные переменные с непоследовательным количеством выборок: [2, 18]'.

Я пробовал несколько методов, но могне найти решение.Очень ценю, если кто-то может помочь.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Почему вы делаете .T на X?

Это меняет форму X с (18,2) на (2,18) и, следовательно, ошибка.

У меня работает следующее (только что убрал .T из конца X):

X = np.matrix([[1.,2], [3.,4], [5.,1], [6.,5], [4, 7.], [9,8.], [1.,2], 
               [3.,4], [5.,1], [6.,5], [4,7.], [ 9,8.], [1.,2], [3.,4], 
               [5.,1], [6.,5], [4,7.], [9,8.]])

y = [84, 42, 47, 55, 25, 78, 52, 25, 75, 22, 45, 45, 88, 56, 77, 
     58, 48, 79]

gp.fit(X, y)
0 голосов
/ 07 июня 2018

Я не вижу весь ваш код, но вот мое предложение.

Похоже, что ваш ввод - это матрица И список. форма матрицы X равна (2,18) , а размер списка y равен 18 .

Поэтому я рекомендую преобразовать список в массив с явно определенной формой (1,18).Запустите это:

y = np.reshape(y,(1,18))

до gp.fit(X, y) и дайте мне знать, если это работает:)

...