Ошибка типа: ожидаемый 1D вектор для x

Я получаю ошибку:

Ошибка типа: ожидаемый 1D вектор для x

Что касается этой линии:

коэффициенты = np.polyfit (x1, y1, 1)

coefficients = np.polyfit(x1, y1, 1)
polynomial = np.poly1d(coefficients)
ys = polynomial(x1)

x1 и y1 являются;

x = frame_query("select * from table",db)
y = frame_query("select * from table",db)

x1 = np.array(x)
y1 = np.array(y)

Состоит из 736 строк данных. Я хочу регрессировать один ряд на другой. Может ли кто-нибудь помочь, пожалуйста?

Благодарю.

2 ответа

Решение

Вы захотите превратить фрейм данных в одномерный массив. Сначала позвольте мне создать фрейм данных

import pandas
d = pandas.DataFrame([[1,2],[3,4],[5,6]],columns=['x1','y1'])

Я думаю, что следующее делает то, что вы хотите:

import numpy
x1 = numpy.array(d['x1'])
y1 = numpy.array(d['y1'])
numpy.polyfit(x1,y1,1)

Я думаю, что проблема у вас в том, что создаваемые вами массивы имеют дополнительное измерение. Например, массивы a а также b ниже "выглядеть" так же, как x1 а также y1,

a = numpy.array([[1,3,5]])
b = numpy.array([[2,4,6]])

но из-за двойной скобки ([[...]]) они на самом деле двумерные. Я могу уменьшить размерность, выбрав только 0-й столбец:

x1 = a[0,:]
y1 = b[0,:]

Тогда полифит будет работать. РЕДАКТИРОВАТЬ: если вы посмотрите на форму массивов (например, x1.shape) вы должны быть в состоянии сказать, есть ли у вас "дополнительные измерения".

Попробуйте сделать x1 и y1 np.array:

x1 = np.array([45,34,12])
y1 = np.array([19,46,22])
Другие вопросы по тегам