Skip to content

Commit e4ebcdc

Browse files
authored
Merge pull request #434 from KhiopsML/prepare-release-11-0-0-0-b-0
Prepare release 11 0 0 0 b 0
2 parents 07b369f + 2948fbf commit e4ebcdc

File tree

9 files changed

+120
-59
lines changed

9 files changed

+120
-59
lines changed

.github/workflows/api-docs.yml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
---
22
name: API Docs
33
env:
4-
DEFAULT_KHIOPS_PYTHON_TUTORIAL_REVISION: main
4+
DEFAULT_KHIOPS_PYTHON_TUTORIAL_REVISION: 11.0.0.0-b.0
5+
DEFAULT_KHIOPS_SAMPLES_REVISION: 11.0.0
56
on:
67
workflow_dispatch:
78
inputs:
89
khiops-python-tutorial-revision:
9-
default: main
10+
default: 11.0.0.0-b.0
1011
description: khiops-python-tutorial repo revision
12+
khiops-samples-revision:
13+
default: 11.0.0
14+
description: khiops-samples repo revision
1115
image-tag:
12-
default: 11.0.0-a.0.0
16+
default: 11.0.0-b.0.0
1317
description: Development Docker Image Tag
1418
pull_request:
1519
paths:
@@ -41,7 +45,7 @@ jobs:
4145
# because the `env` context is only accessible at the step level;
4246
# hence, it is hard-coded
4347
image: |-
44-
ghcr.io/khiopsml/khiops-python/khiopspydev-ubuntu22.04:${{ inputs.image-tag || '11.0.0-a.0.0' }}
48+
ghcr.io/khiopsml/khiops-python/khiopspydev-ubuntu22.04:${{ inputs.image-tag || '11.0.0-b.0.0' }}
4549
# Use the 'runner' user (1001) from github so checkout actions work properly
4650
# https://github.com/actions/runner/issues/2033#issuecomment-1598547465
4751
options: --user 1001
@@ -56,7 +60,7 @@ jobs:
5660
run: |
5761
# Install package itself to install the samples datasets
5862
pip3 install .
59-
kh-download-datasets --force-overwrite
63+
kh-download-datasets --force-overwrite --version ${{ inputs.khiops-samples-revision || env.DEFAULT_KHIOPS_SAMPLES_REVISION }}
6064
kh-status
6165
6266
# Install the doc python requirements

.github/workflows/conda.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ name: Conda Package
33
env:
44
# Note: The default Khiops version must never be an alpha release as they are
55
# ephemeral. To test alpha versions run the workflow manually.
6-
DEFAULT_KHIOPS_CORE_VERSION: 11.0.0a.0
6+
DEFAULT_KHIOPS_CORE_VERSION: 11.0.0b.0
77
DEFAULT_SAMPLES_VERSION: 11.0.0
88
on:
99
workflow_dispatch:
1010
inputs:
1111
khiops-core-version:
12-
default: 11.0.0a.0
12+
default: 11.0.0b.0
1313
description: khiops-core version for testing
1414
khiops-samples-version:
1515
default: 11.0.0

.github/workflows/dev-docker.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: Dev Docker
33
env:
4-
DEFAULT_KHIOPS_REVISION: 11.0.0-a.0
4+
DEFAULT_KHIOPS_REVISION: 11.0.0-b.0
55
DEFAULT_IMAGE_INCREMENT: 0
66
DEFAULT_SERVER_REVISION: main
77
DEFAULT_PYTHON_VERSIONS: 3.8 3.9 3.10 3.11 3.12 3.13
@@ -14,7 +14,7 @@ on:
1414
inputs:
1515
khiops-revision:
1616
type: string
17-
default: 11.0.0-a.0
17+
default: 11.0.0-b.0
1818
description: Khiops Revision
1919
image-increment:
2020
type: number

.github/workflows/pip.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ on:
99
default: 11.0.0
1010
description: khiops-samples repo revision
1111
image-tag:
12-
default: 11.0.0-a.0.0
12+
default: 11.0.0-b.0.0
1313
description: Development Docker Image Tag
1414
pull_request:
1515
paths:
@@ -64,7 +64,7 @@ jobs:
6464
# because the `env` context is only accessible at the step level;
6565
# hence, it is hard-coded
6666
image: |-
67-
ghcr.io/khiopsml/khiops-python/khiopspydev-${{ matrix.container }}:${{ inputs.image-tag || '11.0.0-a.0.0' }}
67+
ghcr.io/khiopsml/khiops-python/khiopspydev-${{ matrix.container }}:${{ inputs.image-tag || '11.0.0-b.0.0' }}
6868
steps:
6969
- name: Set parameters as env
7070
run: |

.github/workflows/tests.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22
name: Tests
33
env:
44
DEFAULT_SAMPLES_REVISION: 11.0.0
5-
DEFAULT_KHIOPS_DESKTOP_REVISION: 11.0.0-a.0
5+
DEFAULT_KHIOPS_DESKTOP_REVISION: 11.0.0-b.0
66
on:
77
workflow_dispatch:
88
inputs:
99
samples-revision:
1010
default: 11.0.0
1111
description: Git Tag/Branch/Commit for the khiops-samples Repo
1212
image-tag:
13-
default: 11.0.0-a.0.0
13+
default: 11.0.0-b.0.0
1414
description: Development Docker Image Tag
1515
khiops-desktop-revision:
16-
default: 11.0.0-a.0
16+
default: 11.0.0-b.0
1717
description: Khiops Windows Desktop Application Version
1818
run-expensive-tests:
1919
type: boolean
@@ -43,7 +43,7 @@ jobs:
4343
# because the `env` context is only accessible at the step level;
4444
# hence, it is hard-coded
4545
image: |-
46-
ghcr.io/khiopsml/khiops-python/khiopspydev-ubuntu22.04:${{ inputs.image-tag || '11.0.0-a.0.0' }}
46+
ghcr.io/khiopsml/khiops-python/khiopspydev-ubuntu22.04:${{ inputs.image-tag || '11.0.0-b.0.0' }}
4747
credentials:
4848
username: ${{ github.actor }}
4949
password: ${{ secrets.GITHUB_TOKEN }}
@@ -315,7 +315,7 @@ jobs:
315315
# because the `env` context is only accessible at the step level;
316316
# hence, it is hard-coded
317317
image: |-
318-
ghcr.io/khiopsml/khiops-python/khiopspydev-${{ matrix.container }}:${{ inputs.image-tag || '11.0.0-a.0.0' }}
318+
ghcr.io/khiopsml/khiops-python/khiopspydev-${{ matrix.container }}:${{ inputs.image-tag || '11.0.0-b.0.0' }}
319319
credentials:
320320
username: ${{ github.actor }}
321321
password: ${{ secrets.GITHUB_TOKEN }}

CHANGELOG.md

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,73 @@
66
- Example: 10.2.1.4 is the 5th version that supports khiops 10.2.1.
77
- Internals: Changes in *Internals* sections are unlikely to be of interest for data scientists.
88

9-
## Unreleased
9+
## 11.0.0.0-b.0 - 2025-07-10
10+
11+
### Added
12+
- (`core`) API support for predictor interpretation and reinforcement.
13+
- (`core`) API support for instance-variable coclustering model training.
14+
- (`core`) Support for text types in prediction and coclustering models.
15+
- (`core`) Analysis and coclustering report JSON serialization support.
16+
- (`sklearn`) Automatic removal of newline characters in strings on Pandas
17+
dataframe columns. This is to ensure the proper working of the Khiops engine.
18+
19+
### Changed
20+
- (`core`) Syntax for additional data tables specification, which uses the data
21+
paths.
22+
- (`core`) API specification of the results path: full paths to report files are
23+
now used instead of result directories.
24+
- (`sklearn`) Specification of the hierarchical multi-table schemata, which now
25+
uses data paths as in the Core API.
26+
- (`general`) Various other changes and updates for Khiops 11.0.0-b.0
27+
compatibility.
28+
29+
### Deprecated
30+
- (`core`) The results directory parameter of the Core API functions. The full
31+
path to the reports must now be specified instead.
32+
- (`core`) The "``"-based secondary table path specification. The "/"-based data
33+
paths must now be used instead.
34+
- (`sklearn`) The specification syntax for hierarchical multi-table datasets.
35+
The "/"-based data paths must now be used instead, as in the Core API.
36+
37+
### Removed
38+
- (`general`) All functions, attributes and features that had been deprecated in
39+
the 10.3.2.0 version.
40+
41+
## 10.3.2.0 - 2025-07-03
42+
43+
### Fixed
44+
- (`sklearn`) Documentation display for the `train_test_split_dataset` sklearn
45+
helper function.
46+
47+
## 10.3.1.0 - 2025-04-16
1048

1149
### Added
1250
- (`sklearn`) Support for boolean and float targets in `KhiopsClassifier`.
1351

52+
### Fixed
53+
- (`sklearn`) Crash when there were no informative trees in predictors.
54+
55+
### Deprecated
56+
- (`core`) The `build_multi_table_dictionary_domain` helper function.
57+
58+
## 10.3.0.0 - 2025-02-10
59+
60+
### Fixed
61+
- (`core`) Dictionary file `.json` extension check in the `khiops.dictionary.read_dictionary_file`
62+
function.
63+
64+
### Changed
65+
- (`sklearn`) The `train_test_split_dataset` helper has been moved from `khiops.utils` to
66+
`khiops.sklearn`.
67+
- (`sklearn`) The `transform_pairs` parameter of the `KhiopsEncoder` sklearn estimator has been
68+
renamed to `transform_type_pairs`.
69+
70+
### Removed
71+
- (`sklearn`) The `is_fitted_` estimator attribute. The Scikit-learn `check_is_fitted` function
72+
can be used to test the fitted state of the estimators.
73+
- (`sklearn`) The `n_pairs` parameter of the `KhiopsRegressor` sklearn estimator. It was never
74+
supported.
75+
1476
## 10.2.4.0 - 2024-12-19
1577

1678
### Added

doc/multi_table_primer.rst

Lines changed: 24 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -76,40 +76,31 @@ feature object ``X``. Specifically, instead of a `pandas.DataFrame`, ``X`` must
7676
specifies the dataset schema in the following way::
7777

7878
X = {
79-
"main_table": <name of the main table>,
80-
"tables" : {
81-
<name of the main table>: (<dataframe of the main table>, <key of the main table>),
82-
<name of table 1>: (<dataframe of table 1>, <key of table 1>),
83-
<name of table 2>: (<dataframe of table 2>, <key of table 2>),
79+
"main_table": (<dataframe of the main table>, <key of the main table>),
80+
"additional_data_tables" : {
81+
<data path to table 1>: (
82+
<dataframe of table 1>, [<key of table 1>], <optional entity flag>
83+
),
84+
<data path to table 2>: (
85+
<dataframe of table 2>, [<key of table 2>], <optional entity flag>
86+
),
8487
...
8588
}
86-
"relations" : [
87-
(<name of the main table>, <name of a different table>, <entity flag>),
88-
(<name of another table>, <name of yet another table>, <entity flag>),
89-
...
90-
],
9189
}
9290

9391
The three fields of this dictionary are:
9492

95-
- ``main_table``: The name of the main table.
96-
- ``tables``: A dictionary indexed by the tables' names. Each table is associated to a 2-tuple
97-
containing the following fields:
93+
- ``main_table``: a 2-tuple containing the following fields:
94+
- The `pandas.DataFrame` object of the main table.
95+
- The key columns' names: A list of strings.
96+
.
97+
- ``additional_data_tables``: A dictionary indexed by the data paths to the secondary
98+
tables. Each data path is associated to a 2-tuple containing the following fields:
9899

99-
- The `pandas.DataFrame` object of the table.
100-
- The key columns' names : Either a list of strings or a single string.
101-
102-
- ``relations``: An optional field containing a list of tuples describing the relations between
103-
tables. The first two values (Strings) of each tuple correspond to names of both the parent and the child table
104-
involved in the relation. A third value (Boolean) can be optionally added to the tuple to indicate if the relation is
105-
either ``1:n`` or ``1:1`` (entity). For example, If the tuple ``(table1, table2, True)`` is contained in this
106-
field, it means that:
107-
108-
- ``table1`` and ``table2`` are in a ``1:1`` relationship
109-
- The key of ``table1`` is contained in that of ``table2`` (ie. keys are hierarchical)
110-
111-
If the ``relations`` field is not present then Khiops Python assumes that the tables are in a *star*
112-
schema.
100+
- The `pandas.DataFrame` object of the secondary table.
101+
- The key columns' names : A list of strings.
102+
- optionally, a flag which indicates if the secondary table is in
103+
a ``1:1`` relationship to its parent table.
113104

114105
.. note::
115106

@@ -138,9 +129,8 @@ We build the input ``X`` as follows::
138129
accidents_df = pd.read_csv(f"{kh.get_samples_dir()}/AccidentsSummary/Accidents.txt", sep="\t")
139130
vehicles_df = pd.read_csv(f"{kh.get_samples_dir()}/AccidentsSummary/Vehicles.txt", sep="\t")
140131
X = {
141-
"main_table" : "Accident",
142-
"tables": {
143-
"Accident": (accidents_df.drop("Gravity", axis=1), "AccidentId"),
132+
"main_table" : (accidents_df.drop("Gravity", axis=1), ["AccidentId"]),
133+
"additional_data_tables": {
144134
"Vehicle": (vehicles_df, ["AccidentId", "VehicleId"])
145135
}
146136
}
@@ -170,19 +160,12 @@ We build the input ``X`` as follows::
170160
places_df = pd.read_csv(f"{kh.get_samples_dir()}/Accidents/Places.txt", sep="\t")
171161

172162
X = {
173-
"main_table": "Accidents",
174-
"tables": {
175-
"Accidents": (accidents_df.drop("Gravity", axis=1), "AccidentId"),
163+
"main_table": (accidents_df.drop("Gravity", axis=1), ["AccidentId"]),
164+
"additional_data_tables": {
176165
"Vehicles": (vehicles_df, ["AccidentId", "VehicleId"]),
177-
"Users": (users_df, ["AccidentId", "VehicleId"]),
178-
"Places": (places_df, "AccidentId"),
179-
166+
"Vehicles/Users": (users_df, ["AccidentId", "VehicleId"]),
167+
"Places": (places_df, ["AccidentId"], True),
180168
},
181-
"relations": [
182-
("Accidents", "Vehicles"),
183-
("Vehicles", "Users"),
184-
("Accidents", "Places", True),
185-
],
186169
}
187170

188171
Both datasets can be found in the Khiops samples directory.

khiops/sklearn/dataset.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,18 @@ def _check_multitable_spec(ds_spec):
177177

178178

179179
def table_name_of_path(table_path):
180+
"""Returns the table name as the last fragment of the table data path
181+
182+
Parameters
183+
----------
184+
table_path: str
185+
Data path of the table, in the format "path/to/table".
186+
187+
Returns
188+
-------
189+
str
190+
The name of the table.
191+
"""
180192
return table_path.split("/")[-1]
181193

182194

packaging/conda/meta.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ requirements:
2626
- python
2727
run:
2828
- python
29-
- conda-forge/label/rc::khiops-core =11.0.0a.0
29+
- khiops-core =11.0.0b.0
3030
- pandas >=0.25.3
3131
- scikit-learn >=0.22.2
3232
run_constrained:

0 commit comments

Comments
 (0)