首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >海热图错误:“AttributeError:'NoneType‘对象没有属性'reshape’”

海热图错误:“AttributeError:'NoneType‘对象没有属性'reshape’”
EN

Stack Overflow用户
提问于 2021-07-08 04:55:07
回答 1查看 2.7K关注 0票数 1

我正在做一个NLP项目,看看10个不同的经典摇滚艺术家的作品之间的余弦相似之处。我做过相似查询,并创建了一个名为similarities的数据文件,如下所示。

我首先构建了一个以艺术家名称作为索引和列名的空similarities数据框架,然后运行以下代码来运行相似查询,并使用分数填充数据:

代码语言:javascript
复制
    artist_words = data['lyrics'][artist]
    
    artist_vec_bow = dictionary.doc2bow(artist_words.lower().split())
    artist_vec_lsi = lsi[artist_vec_bow]
    
    artist_sims = index[artist_vec_lsi]
    
    artist_sims_sorted = sorted(enumerate(artist_sims), key=lambda item: -item[1])
    
    for position, score in artist_sims_sorted:
    
        similarities.at[artist, musicians[position][1]] = score 

data是一个数据格式,以艺术家的名字作为索引,还有一个名为lyrics的列,在该列中,歌词作为一个长字符串输入。

我想要创建一个海运热图来可视化在DataFrame中指示的相关性。

但是,当我运行以下代码时:

sns.heatmap(similarities)

我收到一条很长的错误消息,它的结尾是:

AttributeError: 'NoneType' object has no attribute 'reshape'

有人能帮我弄清楚怎么把这个想象出来吗?

similarities.info()返回以下内容:

代码语言:javascript
复制
Index: 11 entries, bob_dylan to willie_nelson
Data columns (total 11 columns):
 #   Column          Non-Null Count  Dtype 
---  ------          --------------  ----- 
 0   bob_dylan       11 non-null     object
 1   david_bowie     11 non-null     object
 2   janis_joplin    11 non-null     object
 3   john_prine      11 non-null     object
 4   leonard_cohen   11 non-null     object
 5   linda_ronstadt  11 non-null     object
 6   mark_knopfler   11 non-null     object
 7   neil_young      11 non-null     object
 8   stevie_nicks    11 non-null     object
 9   the_band        11 non-null     object
 10  willie_nelson   11 non-null     object
dtypes: object(11)
memory usage: 1.3+ KB

similarities.describe()返回以下内容:

similarities.describe()

如果完整的错误消息有帮助,如下所示:

代码语言:javascript
复制
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/var/folders/tb/j430qmhn16s6nsz08nf0y7y40000gn/T/ipykernel_40566/1345125298.py in <module>
----> 1 ax2 = sns.heatmap(
      2     similarities,
      3     vmin=-1, vmax=1, center=0,
      4     cmap=sns.diverging_palette(20, 220, n=200),
      5     square=True

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/seaborn/_decorators.py in inner_f(*args, **kwargs)
     44             )
     45         kwargs.update({k: arg for k, arg in zip(sig.parameters, args)})
---> 46         return f(**kwargs)
     47     return inner_f
     48 

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/seaborn/matrix.py in heatmap(data, vmin, vmax, cmap, center, robust, annot, fmt, annot_kws, linewidths, linecolor, cbar, cbar_kws, cbar_ax, square, xticklabels, yticklabels, mask, ax, **kwargs)
    546     if square:
    547         ax.set_aspect("equal")
--> 548     plotter.plot(ax, cbar_ax, kwargs)
    549     return ax
    550 

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/seaborn/matrix.py in plot(self, ax, cax, kws)
    330         # Possibly rotate them if they overlap
    331         if hasattr(ax.figure.canvas, "get_renderer"):
--> 332             ax.figure.draw(ax.figure.canvas.get_renderer())
    333         if axis_ticklabels_overlap(xtl):
    334             plt.setp(xtl, rotation="vertical")

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     72     @wraps(draw)
     73     def draw_wrapper(artist, renderer, *args, **kwargs):
---> 74         result = draw(artist, renderer, *args, **kwargs)
     75         if renderer._rasterizing:
     76             renderer.stop_rasterizing()

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     49                 renderer.start_filter()
     50 
---> 51             return draw(artist, renderer, *args, **kwargs)
     52         finally:
     53             if artist.get_agg_filter() is not None:

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/figure.py in draw(self, renderer)
   2778 
   2779             self.patch.draw(renderer)
-> 2780             mimage._draw_list_compositing_images(
   2781                 renderer, self, artists, self.suppressComposite)
   2782 

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
    130     if not_composite or not has_images:
    131         for a in artists:
--> 132             a.draw(renderer)
    133     else:
    134         # Composite any adjacent images together

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     49                 renderer.start_filter()
     50 
---> 51             return draw(artist, renderer, *args, **kwargs)
     52         finally:
     53             if artist.get_agg_filter() is not None:

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/_api/deprecation.py in wrapper(*inner_args, **inner_kwargs)
    429                          else deprecation_addendum,
    430                 **kwargs)
--> 431         return func(*inner_args, **inner_kwargs)
    432 
    433     return wrapper

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/axes/_base.py in draw(self, renderer, inframe)
   2919             renderer.stop_rasterizing()
   2920 
-> 2921         mimage._draw_list_compositing_images(renderer, self, artists)
   2922 
   2923         renderer.close_group('axes')

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
    130     if not_composite or not has_images:
    131         for a in artists:
--> 132             a.draw(renderer)
    133     else:
    134         # Composite any adjacent images together

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     49                 renderer.start_filter()
     50 
---> 51             return draw(artist, renderer, *args, **kwargs)
     52         finally:
     53             if artist.get_agg_filter() is not None:

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/collections.py in draw(self, renderer)
   2099                 offsets = np.column_stack([xs, ys])
   2100 
-> 2101         self.update_scalarmappable()
   2102 
   2103         if not transform.is_affine:

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/collections.py in update_scalarmappable(self)
    924                 # pcolormesh, scatter, maybe others flatten their _A
    925                 self._alpha = self._alpha.reshape(self._A.shape)
--> 926             self._mapped_colors = self.to_rgba(self._A, self._alpha)
    927 
    928         if self._face_is_mapped:

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/cm.py in to_rgba(self, x, alpha, bytes, norm)
    358         if norm:
    359             x = self.norm(x)
--> 360         rgba = self.cmap(x, alpha=alpha, bytes=bytes)
    361         return rgba
    362 

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/colors.py in __call__(self, X, alpha, bytes)
    612             self._init()
    613 
--> 614         mask_bad = X.mask if np.ma.is_masked(X) else np.isnan(X)  # Mask nan's.
    615         xa = np.array(X, copy=True)
    616         if not xa.dtype.isnative:

TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/IPython/core/formatters.py in __call__(self, obj)
    339                 pass
    340             else:
--> 341                 return printer(obj)
    342             # Finally look for special method names
    343             method = get_real_method(obj, self.print_method)

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/IPython/core/pylabtools.py in <lambda>(fig)
    248 
    249     if 'png' in formats:
--> 250         png_formatter.for_type(Figure, lambda fig: print_figure(fig, 'png', **kwargs))
    251     if 'retina' in formats or 'png2x' in formats:
    252         png_formatter.for_type(Figure, lambda fig: retina_figure(fig, **kwargs))

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/IPython/core/pylabtools.py in print_figure(fig, fmt, bbox_inches, **kwargs)
    132         FigureCanvasBase(fig)
    133 
--> 134     fig.canvas.print_figure(bytes_io, **kw)
    135     data = bytes_io.getvalue()
    136     if fmt == 'svg':

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/backend_bases.py in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, pad_inches, bbox_extra_artists, backend, **kwargs)
   2228                        else suppress())
   2229                 with ctx:
-> 2230                     self.figure.draw(renderer)
   2231 
   2232             if bbox_inches:

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     72     @wraps(draw)
     73     def draw_wrapper(artist, renderer, *args, **kwargs):
---> 74         result = draw(artist, renderer, *args, **kwargs)
     75         if renderer._rasterizing:
     76             renderer.stop_rasterizing()

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     49                 renderer.start_filter()
     50 
---> 51             return draw(artist, renderer, *args, **kwargs)
     52         finally:
     53             if artist.get_agg_filter() is not None:

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/figure.py in draw(self, renderer)
   2778 
   2779             self.patch.draw(renderer)
-> 2780             mimage._draw_list_compositing_images(
   2781                 renderer, self, artists, self.suppressComposite)
   2782 

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
    130     if not_composite or not has_images:
    131         for a in artists:
--> 132             a.draw(renderer)
    133     else:
    134         # Composite any adjacent images together

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     49                 renderer.start_filter()
     50 
---> 51             return draw(artist, renderer, *args, **kwargs)
     52         finally:
     53             if artist.get_agg_filter() is not None:

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/_api/deprecation.py in wrapper(*inner_args, **inner_kwargs)
    429                          else deprecation_addendum,
    430                 **kwargs)
--> 431         return func(*inner_args, **inner_kwargs)
    432 
    433     return wrapper

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/axes/_base.py in draw(self, renderer, inframe)
   2919             renderer.stop_rasterizing()
   2920 
-> 2921         mimage._draw_list_compositing_images(renderer, self, artists)
   2922 
   2923         renderer.close_group('axes')

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
    130     if not_composite or not has_images:
    131         for a in artists:
--> 132             a.draw(renderer)
    133     else:
    134         # Composite any adjacent images together

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     49                 renderer.start_filter()
     50 
---> 51             return draw(artist, renderer, *args, **kwargs)
     52         finally:
     53             if artist.get_agg_filter() is not None:

/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/matplotlib/collections.py in draw(self, renderer)
   2128                 coordinates, offsets, transOffset,
   2129                 # Backends expect flattened rgba arrays (n*m, 4) for fc and ec
-> 2130                 self.get_facecolor().reshape((-1, 4)),
   2131                 self._antialiased, self.get_edgecolors().reshape((-1, 4)))
   2132         gc.restore()

AttributeError: 'NoneType' object has no attribute 'reshape'
<Figure size 432x288 with 2 Axes>
EN

回答 1

Stack Overflow用户

发布于 2021-07-27 10:45:09

这是因为所使用的类型,我只是遇到了这个问题,并通过为我的dataframe指定一个dtype来解决它。在您的similarities.info() seaborn中,需要看到DType:‘float64 64’或另一个数字类型。

similarities = pd.DataFrame(..., dtype="float")

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68295825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档