成功解决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类型, 而当前出错的代码却提供了pandas.core.indexes.base.Index类型
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_names :列表,可选。 feature 名称列表。 它允许在估算器对象未提供特征名称时指定它们。 根据估算器类型,可能支持或不支持此参数。
源代码解析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
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)