🌐 AI搜索 & 代理 主页
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions doc/whats_new/upcoming_changes/sklearn.compose/32713.fix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- The dotted line for :class:`compose.ColumnTransformer` in its HTML display
now includes only its elements. The behaviour when a remainder is used,
has also been corrected.
By :user:`Dea María Léon <deamarialeon>`
2 changes: 1 addition & 1 deletion sklearn/compose/_column_transformer.py
Original file line number Diff line number Diff line change
Expand Up @@ -1237,7 +1237,7 @@ def _sk_visual_block_(self):
self.transformers, [("remainder", self.remainder, remainder_columns)]
)
else:
transformers = chain(self.transformers, [("remainder", self.remainder, "")])
transformers = chain(self.transformers, [("remainder", self.remainder, [])])

names, transformers, name_details = zip(*transformers)
return _VisualBlock(
Expand Down
2 changes: 1 addition & 1 deletion sklearn/compose/tests/test_column_transformer.py
Original file line number Diff line number Diff line change
Expand Up @@ -1538,7 +1538,7 @@ def test_sk_visual_block_remainder(remainder):
)
visual_block = ct._sk_visual_block_()
assert visual_block.names == ("ohe", "remainder")
assert visual_block.name_details == (["col1", "col2"], "")
assert visual_block.name_details == (["col1", "col2"], [])
assert visual_block.estimators == (ohe, remainder)


Expand Down
17 changes: 13 additions & 4 deletions sklearn/utils/_repr_html/estimator.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,10 +184,11 @@ def _write_label_html(
f'<a class="sk-estimator-doc-link {is_fitted_css_class}"'
f' rel="noreferrer" target="_blank" href="{doc_link}">?{doc_label}</a>'
)

if name == "passthrough" or name_details == "[]":
name_caption = ""
name_caption_div = (
""
if name_caption is None
if name_caption is None or name_caption == ""
else f'<div class="caption">{html.escape(name_caption)}</div>'
)
name_caption_div = f"<div><div>{name}</div>{name_caption_div}</div>"
Expand All @@ -196,10 +197,13 @@ def _write_label_html(
if doc_link or is_fitted_icon
else ""
)
label_arrow_class = (
"" if name == "passthrough" else "sk-toggleable__label-arrow"
)

label_html = (
f'<label for="{est_id}" class="sk-toggleable__label {is_fitted_css_class} '
f'sk-toggleable__label-arrow">{name_caption_div}{links_div}</label>'
f'{label_arrow_class}">{name_caption_div}{links_div}</label>'
)

fmt_str = (
Expand All @@ -212,6 +216,8 @@ def _write_label_html(
if params:
fmt_str = "".join([fmt_str, f"{params}</div>"])
elif name_details and ("Pipeline" not in name):
if name == "passthrough" or name_details == "[]":
name_details = ""
fmt_str = "".join([fmt_str, f"<pre>{name_details}</pre></div>"])

out.write(fmt_str)
Expand Down Expand Up @@ -382,7 +388,10 @@ def _write_estimator_html(

out.write("</div></div>")
elif est_block.kind == "single":
if hasattr(estimator, "_get_params_html"):
if (
hasattr(estimator, "_get_params_html")
and not est_block.names == "passthrough"
):
params = estimator._get_params_html(doc_link=doc_link)._repr_html_inner()
else:
params = ""
Expand Down
Loading