成功解决raise TypeError('Unexpected feature_names type')TypeError: Unexpected feature_names type
目录
解决问题
解决思路
解决方法
源代码解析
解决问题
raise TypeError('Unexpected feature_names type')TypeError: Unexpected feature_names type
解决思路
解决方法
feature_names : list, optional. A list of feature names. It allows to specify feature names when they are not provided by an estimator object. This argument may be supported or not, depending on estimator type.
源代码解析
def show_weights(estimator, **kwargs):
""" Return an explanation of estimator parameters (weights)
as an IPython.display.HTML object. Use this function
to show classifier weights in IPython.
:func:`show_weights` accepts all
:func:`eli5.explain_weights` arguments and all
:func:`eli5.formatters.html.format_as_html`
keyword arguments, so it is possible to get explanation and
customize formatting in a single call.
Parameters
----------
estimator : object
Estimator instance. This argument must be positional.
top : int or (int, int) tuple, optional
Number of features to show. When ``top`` is int, ``top``
features with
a highest absolute values are shown. When it is (pos, neg)
tuple,
no more than ``pos`` positive features and no more than
``neg``
negative features is shown. ``None`` value means no limit.
This argument may be supported or not, depending on
estimator type.
target_names : list[str] or {'old_name': 'new_name'} dict,
optional
Names of targets or classes. This argument can be used to
provide
human-readable class/target names for estimators which
don't expose
clss names themselves. It can be also used to rename
estimator-provided
classes before displaying them.
This argument may be supported or not, depending on
estimator type.
targets : list, optional
Order of class/target names to show. This argument can be
also used
to show information only for a subset of classes. It should
be a list
of class / target names which match either names provided
by
an estimator or names defined in ``target_names``
parameter.
This argument may be supported or not, depending on
estimator type.
feature_names : list, optional
A list of feature names. It allows to specify feature
names when they are not provided by an estimator object.
This argument may be supported or not, depending on
estimator type.
feature_re : str, optional
Only feature names which match ``feature_re`` regex are
shown
(more precisely, ``re.search(feature_re, x)`` is checked).
feature_filter : Callable[[str], bool], optional
Only feature names for which ``feature_filter`` function
returns True
are shown.
show : List[str], optional
List of sections to show. Allowed values:
* 'targets' - per-target feature weights;
* 'transition_features' - transition features of a CRF model;
* 'feature_importances' - feature importances of a decision
tree or
an ensemble-based estimator;
* 'decision_tree' - decision tree in a graphical form;
* 'method' - a string with explanation method;
* 'description' - description of explanation method and its
caveats.
``eli5.formatters.fields`` provides constants that cover
common cases:
``INFO`` (method and description), ``WEIGHTS`` (all the rest),
and ``ALL`` (all).
horizontal_layout : bool
When True, feature weight tables are printed horizontally
(left to right); when False, feature weight tables are printed
vertically (top to down). Default is True.
highlight_spaces : bool or None, optional
Whether to highlight spaces in feature names. This is useful
if
you work with text and have ngram features which may
include spaces
at left or right. Default is None, meaning that the value used
is set automatically based on vectorizer and feature values.
include_styles : bool
Most styles are inline, but some are included separately in
<style> tag;
you can omit them by passing ``include_styles=False``.
Default is True.
**kwargs: dict
Keyword arguments. All keyword arguments are passed to
concrete explain_weights... implementations.
Returns
-------
IPython.display.HTML
The result is printed in IPython notebook as an HTML
widget.
If you need to display several explanations as an output of
a single
cell, or if you want to display it from a function then use
IPython.display.display::
from IPython.display import display
display(eli5.show_weights(clf1))
display(eli5.show_weights(clf2))
"""
format_kwargs, explain_kwargs = _split_kwargs(kwargs)
expl = explain_weights(estimator, **explain_kwargs)
_set_html_kwargs_defaults(format_kwargs)
html = format_as_html(expl, **format_kwargs)
return HTML(html)