#python #numpy #matplotlib #regression
#python #numpy #matplotlib #регрессия
Вопрос:
Я очень смущен этим. Я пытаюсь выполнить линейную регрессию для набора данных, и я получил ошибку значения в начале программы из-за того, что мой набор данных должен быть 2D вместо 1D, поэтому я изменил форму каждой части моего набора данных следующим образом:
x1_train = np.array(x1_train.reshape(-1, 1))
y_train = np.array(y_train.reshape(-1, 1))
x1_test = np.array(x1_test.reshape(-1, 1))
y_test = np.array(y_test.reshape(-1, 1))
x1_pred = np.array(x1_pred.reshape(-1, 1))
y_pred = np.array(y_pred.reshape(-1, 1))
Теперь, позже, когда я пытаюсь построить учебный набор данных, я получаю другую ошибку значения:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-91-6b2e11318dc3> in <module>
1 # Visualizing our results
2 plt.scatter(x1_train, y_train, color = 'green')
----> 3 plt.plot(x1_train, y_pred, color = 'red')
4 plt.title('Happiness Index Score vs. GDP Per Capita(Training Dataset)')
5 plt.xlabel('GDP Per Capita')
~anaconda3libsite-packagesmatplotlibpyplot.py in plot(scalex, scaley, data, *args, **kwargs)
2759 @docstring.copy(Axes.plot)
2760 def plot(*args, scalex=True, scaley=True, data=None, **kwargs):
-> 2761 return gca().plot(
2762 *args, scalex=scalex, scaley=scaley, **({"data": data} if data
2763 is not None else {}), **kwargs)
~anaconda3libsite-packagesmatplotlibaxes_axes.py in plot(self, scalex, scaley, data, *args, **kwargs)
1645 """
1646 kwargs = cbook.normalize_kwargs(kwargs, mlines.Line2D)
-> 1647 lines = [*self._get_lines(*args, data=data, **kwargs)]
1648 for line in lines:
1649 self.add_line(line)
~anaconda3libsite-packagesmatplotlibaxes_base.py in __call__(self, *args, **kwargs)
214 this = args[0],
215 args = args[1:]
--> 216 yield from self._plot_args(this, kwargs)
217
218 def get_next_color(self):
~anaconda3libsite-packagesmatplotlibaxes_base.py in _plot_args(self, tup, kwargs)
340
341 if x.shape[0] != y.shape[0]:
--> 342 raise ValueError(f"x and y must have same first dimension, but "
343 f"have shapes {x.shape} and {y.shape}")
344 if x.ndim > 2 or y.ndim > 2:
ValueError: x and y must have same first dimension, but have shapes (104, 1) and (52, 1)
Вот код, который выдает это сообщение об ошибке / трассировку:
plt.scatter(x1_train, y_train, color = 'green')
plt.plot(x1_train, y_pred, color = 'red')
plt.title('Happiness Index Score vs. GDP Per Capita(Training Dataset)')
plt.xlabel('GDP Per Capita')
plt.ylabel('Happiness Index Score')
plt.show()
Кто-нибудь понимает, что здесь происходит?
Комментарии:
1. как насчет использования .reshape(-1)? работает ли это?
2. Это не сработало. Я также попробовал .reshape(1, -1) и получил эту ошибку: ` ValueError: matmul: входной операнд 1 имеет несоответствие в его основном измерении 0, с сигнатурой gufunc (n?, k), (k, m?)-> (n?, m?) (размер 104отличается от 52) `
3. Попробуйте
x_train.reshape((-1,2))
иy_train.reshape((-1,1))
4. Получил еще одну ошибку.
ValueError: Found input variables with inconsistent numbers of samples: [52, 104]
5. Можете ли вы показать «короткую версию»
x1_train
иy_train
(перед изменением формы)?