Skip to content

CooksDistance regressor generating error #1314

Open
@ImolaS3

Description

@ImolaS3

Describe the bug
I recieve the error: 'Axes.stem() got an unexpected keyword argument 'use_line_collection'

To Reproduce
import os
import pandas as pd
from yellowbrick.regressor import CooksDistance

df = pd.read_csv('Advertising.csv')

X = df[['TV', 'Radio', 'Newspaper']]
y = df['Sales']

visualizer = CooksDistance()

visualizer.fit(X, y)

visualizer.show(outpath="Cook's_Distance_Plot.png")

Dataset
Did you use a specific dataset to produce the bug? Where can we access it?

Expected behavior
The code should display the output of the CooksDistance regressor

Traceback

TypeError                                 Traceback (most recent call last)
Cell In[26], line 19
     16 # Creating the Cook's distance plot
     17 visualizer = CooksDistance()
---> 19 visualizer.fit(X, y)
     21 # Saving plot in PNG format
     22 visualizer.show(outpath="Cook's_Distance_Plot.png")

File ~/anaconda3/lib/python3.11/site-packages/yellowbrick/regressor/influence.py:173, in CooksDistance.fit(self, X, y)
    168 self.outlier_percentage_ = (
    169     sum(self.distance_ > self.influence_threshold_) / X.shape[0]
    170 )
    171 self.outlier_percentage_ *= 100.0
--> 173 self.draw()
    174 return self

File ~/anaconda3/lib/python3.11/site-packages/yellowbrick/regressor/influence.py:182, in CooksDistance.draw(self)
    177 """
    178 Draws a stem plot where each stem is the Cook's Distance of the instance at the
    179 index specified by the x axis. Optionaly draws a threshold line.
    180 """
    181 # Draw a stem plot with the influence for each instance
--> 182 _, _, baseline = self.ax.stem(
    183     self.distance_, linefmt=self.linefmt, markerfmt=self.markerfmt,
    184     use_line_collection=True
    185 )
    187 # No padding on either side of the instance index
    188 self.ax.set_xlim(0, len(self.distance_))

File ~/anaconda3/lib/python3.11/site-packages/matplotlib/__init__.py:1465, in _preprocess_data.<locals>.inner(ax, data, *args, **kwargs)
   1462 @functools.wraps(func)
   1463 def inner(ax, *args, data=None, **kwargs):
   1464     if data is None:
-> 1465         return func(ax, *map(sanitize_sequence, args), **kwargs)
   1467     bound = new_sig.bind(ax, *args, **kwargs)
   1468     auto_label = (bound.arguments.get(label_namer)
   1469                   or bound.kwargs.get(label_namer))

TypeError: Axes.stem() got an unexpected keyword argument 'use_line_collection'

Desktop (please complete the following information):

  • OS: [MacOS
  • Python Version Python 3.11.5
  • Yellowbrick Version - not sure of the umber but I only just installed it and also ran a -u update, so believe it is the latest

Additional context
When I tried to find a solution online, the responses pointed to a change in Matplotlib form v3.8 onwards and I wondered if this si the issue (I assume Yellowbricks code would need altering to account for this update)?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions