Невозможно построить график линейного рассеяния и линии прогнозирования - PullRequest
0 голосов
/ 16 июня 2019

Я перепробовал много методов и прошел через многие вопросы, на которые уже дан ответ, но тщетно.Ничто из этого не могло решить мою проблему.Поэтому, пожалуйста, если вы не можете решить эту проблему, по крайней мере, не отмечайте ее как «дубликат», потому что я с нетерпением жду, чтобы моя модель заработала, и я застрял в этой глупой синтаксической ошибке.

Итак, мой запрос довольно прост, у меня есть фрейм данных, который состоит из 2 столбцов. Первый - это sqft_living, а второй - цена.Итак, я использовал линейную регрессию для прогнозирования цены на основе ее площади в кв.Я хочу визуализировать это как точечный график, за которым следует линия наилучшего соответствия.Тем не менее, я получаю эту ошибку: TypeError: unhashable тип: 'numpy.ndarray' Я уже преобразовал фрейм данных в серию и исправил измерения, а также все еще получаю эту ошибку.Пожалуйста, предоставьте мне код решения вместе с эксплуатацией.Любая помощь будет высоко оценена, так как я застрял с этим и не могу выполнить свое задание.ниже приведен точный код и ошибка, которую я получаю.

import numpy as np
import matplotlib.pyplot as plt  # To visualize
import pandas as pd  # To read data
from sklearn.linear_model import LinearRegression

X = poly1_data.iloc[:, 0].values.reshape(-1, 1)  # values converts it into a numpy array
Y = poly1_data.iloc[:, 1].values.reshape(-1, 1)  # -1 means that calculate the dimension of rows, but have 1 column
linear_regressor = LinearRegression()  # create object for the class
linear_regressor.fit(X, Y)  # perform linear regression
Y_pred = linear_regressor.predict(X)  # make predictions
plt.scatter(X, Y)
plt.plot(X, Y_pred, color='red')
plt.show()
--------------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)
<ipython-input-245-96227c9411b1> in <module>
      9 linear_regressor.fit(X, Y)  # perform linear regression
     10 Y_pred = linear_regressor.predict(X)  # make predictions
---> 11 plt.scatter(X, Y)
     12 plt.plot(X, Y_pred, color='red')
     13 plt.show()

C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\pyplot.py in scatter(x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, edgecolors, data, **kwargs)
   2860         vmin=vmin, vmax=vmax, alpha=alpha, linewidths=linewidths,
   2861         verts=verts, edgecolors=edgecolors, **({"data": data} if data
-> 2862         is not None else {}), **kwargs)
   2863     sci(__ret)
   2864     return __ret

C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\__init__.py in inner(ax, data, *args, **kwargs)
   1808                         "the Matplotlib list!)" % (label_namer, func.__name__),
   1809                         RuntimeWarning, stacklevel=2)
-> 1810             return func(ax, *args, **kwargs)
   1811 
   1812         inner.__doc__ = _add_data_doc(inner.__doc__,

C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py in scatter(self, x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, edgecolors, **kwargs)
   4170             edgecolors = 'face'
   4171 
-> 4172         self._process_unit_info(xdata=x, ydata=y, kwargs=kwargs)
   4173         x = self.convert_xunits(x)
   4174         y = self.convert_yunits(y)

C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\axes\_base.py in _process_unit_info(self, xdata, ydata, kwargs)
   2133             return kwargs
   2134 
-> 2135         kwargs = _process_single_axis(xdata, self.xaxis, 'xunits', kwargs)
   2136         kwargs = _process_single_axis(ydata, self.yaxis, 'yunits', kwargs)
   2137         return kwargs

C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\axes\_base.py in _process_single_axis(data, axis, unit_name, kwargs)
   2116                 # We only need to update if there is nothing set yet.
   2117                 if not axis.have_units():
-> 2118                     axis.update_units(data)
   2119 
   2120             # Check for units in the kwargs, and if present update axis

C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\axis.py in update_units(self, data)
   1471         neednew = self.converter != converter
   1472         self.converter = converter
-> 1473         default = self.converter.default_units(data, self)
   1474         if default is not None and self.units is None:
   1475             self.set_units(default)

C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\category.py in default_units(data, axis)
    101         # default_units->axis_info->convert
    102         if axis.units is None:
--> 103             axis.set_units(UnitData(data))
    104         else:
    105             axis.units.update(data)

C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\category.py in __init__(self, data)
    167         self._counter = itertools.count()
    168         if data is not None:
--> 169             self.update(data)
    170 
    171     def update(self, data):

C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\category.py in update(self, data)
    184         data = np.atleast_1d(np.array(data, dtype=object))
    185 
--> 186         for val in OrderedDict.fromkeys(data):
    187             if not isinstance(val, (str, bytes)):
    188                 raise TypeError("{val!r} is not a string".format(val=val))

TypeError: unhashable type: 'numpy.ndarray'

````[I am getting this image without any scatter plot and best fit line][1]


  [1]: https://i.stack.imgur.com/9jccu.png
...