2016-03-01 3 views
0

Я строю модель категоризации с использованием Gaussian Process with Noise - я не понимаю, почему это ошибка при ошибке значенияGaussian Process Model with Noise: ValueError: самородок должен быть либо скаляром, либо массивом длины n_samples

У меня есть набор данных с примерно 10%, обозначенным как цель 1 или 0. Я пытаюсь предсказать вероятность того, что остальные 90% будут равны 1.

Я использовал sklearn для разделения помеченного набора на тренировки и тестового набора.

Х представляет собой feature_training и это np.array X.shape (54,9)

у является feature_target, и это является np.array y.shape (54,1)

оба поплавка и шума вычисляется как:

dy = 0.5 + 1.0 * np.random.random(y.shape) 
noise = np.random.normal(0, dy) 
y = (y + noise) 

y.shape 
(54,1) 

самородок имеет тип numpy.ndarray и формы (54,1)

В гауссовой модели процесса я использую -

gp = GaussianProcess(corr='squared_exponential', theta0=1e-1, 
       thetaL=1e-3, thetaU=1, 
       nugget=(dy/y) ** 2, 
       random_start=100) 

gp.fit(X, y) 

терпит неудачу, потому что: ValueError: самородок должен быть скаляр или массив длины n_samples

Похоже, X, Y, самородок все типа numpy.ndarray и правильной формы. Я думаю, что самородок имеет длину n_samples (54), поэтому он должен быть эквивалентной длины.

Есть ли что-то очевидное, что мне не хватает?

ответ

0

Ваш y должен быть вектор формы (n,) не массив формы (n,1). Вы можете исправить это с помощью

y = y.reshape((len(y),) 
+0

Спасибо, maxymoo, который сделал это! – FJB