Skip to content

[ENH] Feature as Predictor #6852

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft

Conversation

janezd
Copy link
Contributor

@janezd janezd commented Jul 13, 2024

Issue

Closes #6813.

Description of changes

A widget that "predicts" classes from a single column. I have several questions.

  • The widget offers
    • discrete columns whose values are the same, or a subset of, class values,
    • and numeric columns if the class is binary.
  • When using numeric columns, its values are used as probabilities of class with index 1 (in which case they must be between 0 and 1) or mapped through logistic function with user-specified offset and coefficient.
  • Widget also outputs a model, so it can be fed into Test Learner and compared with other models.

I've put the widget into category Evaluate. This is not a model but rather a trick to turn a Table into Evaluation Results, hence it belongs there because any user interested in this transformation would look for a widget in this category.

Ideas from the discussion:

  • Replace radios with a check box to apply log reg. The check box is disabled and checked when the column contains values outside 0 - 1.
  • Remove line edits and always compute logistic regression
  • Support numeric outcomes; offer fitting with linear regression
Includes
  • Code changes
  • Tests
  • Documentation

Copy link

codecov bot commented Jul 13, 2024

Codecov Report

Attention: Patch coverage is 98.90110% with 2 lines in your changes missing coverage. Please review.

Project coverage is 88.29%. Comparing base (70ebf27) to head (62d47f2).
Report is 153 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #6852      +/-   ##
==========================================
+ Coverage   88.27%   88.29%   +0.02%     
==========================================
  Files         326      328       +2     
  Lines       71137    71319     +182     
==========================================
+ Hits        62793    62972     +179     
- Misses       8344     8347       +3     

@janezd janezd changed the title Add Classify by Column Add "Column as Model" Jul 14, 2024
@janezd janezd force-pushed the classify-by-column branch 2 times, most recently from e6c0c49 to 62d47f2 Compare July 16, 2024 20:24
@janezd janezd added the needs discussion Core developers need to discuss the issue label Nov 28, 2024
@janezd janezd force-pushed the classify-by-column branch from 62d47f2 to 2c09a68 Compare November 30, 2024 21:06
@janezd janezd removed the needs discussion Core developers need to discuss the issue label Nov 30, 2024
@janezd janezd force-pushed the classify-by-column branch 2 times, most recently from ec278bd to bccbd34 Compare November 30, 2024 21:55
@markotoplak markotoplak changed the title Add "Column as Model" [ENH] Feature as Predictor Dec 1, 2024
@janezd janezd force-pushed the classify-by-column branch 2 times, most recently from 91afd14 to 06841a9 Compare May 22, 2025 09:37
@janezd janezd requested a review from Copilot May 22, 2025 09:43
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces a new widget, Feature as Predictor, which repurposes a table column (numeric or discrete) to generate evaluation results and outputs a corresponding model. Key changes include new i18n message entries, widget UI and behavior modifications in owfeatureaspredictor.py along with extensive test coverage, and updates to modelling and classification modules to support the new widget.

Reviewed Changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated no comments.

Show a summary per file
File Description
i18n/si/msgs.jaml Added new translation messages for column learner/model errors.
Orange/widgets/evaluate/owfeatureaspredictor.py Implemented the new widget with control updates and commit logic.
Orange/widgets/evaluate/tests/test_owfeatureaspredictor.py Added tests to verify behavior and UI interaction of the widget.
Orange/modelling/column.py Introduced ColumnLearner/ColumnModel with logistic and linear paths.
Orange/tests/test_classification.py Updated tests to account for ColumnLearner behavior changes.
Orange/modelling/tests/test_column.py Added tests validating column modelling functionality.
Orange/classification/tests/test_column.py Added tests ensuring ColumnClassifier handles mapping and predictions.
Orange/modelling/init.py and classification/init.py Updated exports to include new column modules.
Comments suppressed due to low confidence (1)

Orange/modelling/column.py:99

  • The criteria for setting the 'value_mapping' in ColumnModel relies on an implicit slice comparison between 'class_var.values' and 'column.values', which may be fragile if the ordering or lengths differ. Consider adding a clarifying comment or refactoring this logic to explicitly document the intended mapping behavior.
if (column.is_discrete and class_var.values[:len(column.values)] != column.values):

@janezd janezd force-pushed the classify-by-column branch from 06841a9 to 85569fa Compare May 22, 2025 11:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

How to create 'Evaluation Result' directly from 'Table' data?
2 participants