l0l2learn 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ml-lab-htw
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,213 @@
1
+ Metadata-Version: 2.4
2
+ Name: l0l2learn
3
+ Version: 0.1.0
4
+ Summary: Cardinality- and budget-constrained feature selection for logistic regression using mixed-integer conic optimization
5
+ Home-page: https://github.com/ml-lab-htw/l0l2learn
6
+ Author: Ricardo Knauer
7
+ Author-email: ricardo.knauer@htw-berlin.de
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.10
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: joblib
15
+ Requires-Dist: mosek
16
+ Requires-Dist: numpy
17
+ Requires-Dist: pandas
18
+ Requires-Dist: scikit-learn
19
+ Requires-Dist: scipy
20
+ Requires-Dist: tqdm
21
+ Dynamic: author
22
+ Dynamic: author-email
23
+ Dynamic: classifier
24
+ Dynamic: description
25
+ Dynamic: description-content-type
26
+ Dynamic: home-page
27
+ Dynamic: license-file
28
+ Dynamic: requires-dist
29
+ Dynamic: requires-python
30
+ Dynamic: summary
31
+
32
+ # l0l2learn
33
+
34
+ Feature selection for logistic regression using mixed-integer conic optimization. Unlike Lasso-based approaches, `l0l2learn` directly optimizes feature subsets under explicit cardinality or budget constraints.
35
+
36
+ ## Overview
37
+
38
+ `l0l2learn` is a Python package that provides sklearn-style estimators for cardinality- and budget-constrained feature selection in logistic regression. The package currently includes:
39
+
40
+ - **L0L2Classifier**: L0-constrained L2-regularized logistic regression
41
+ - **ResampledL0L2Classifier**: resampling-based feature selection with frequency-based aggregation to improve the selection stability
42
+
43
+ ## Installation
44
+
45
+ To install the package, use the following command:
46
+
47
+ ```sh
48
+ pip install l0l2learn
49
+ ```
50
+
51
+ Please check the [MOSEK website](https://www.mosek.com/) to request and set up a license for the conic solver.
52
+
53
+ ## Quick Start
54
+
55
+ ### Feature Selection Without Resampling
56
+
57
+ ```python
58
+ from sklearn.datasets import load_breast_cancer
59
+ from sklearn.metrics import roc_auc_score
60
+ from sklearn.model_selection import train_test_split
61
+
62
+ from l0l2learn import L0L2Classifier
63
+
64
+
65
+ X, y = load_breast_cancer(return_X_y=True, as_frame=True)
66
+ X_train, X_test, y_train, y_test = train_test_split(
67
+ X, y, stratify=y
68
+ )
69
+
70
+ clf = L0L2Classifier(
71
+ b=3,
72
+ lambd=1.0
73
+ )
74
+
75
+ clf.fit(X_train, y_train)
76
+ y_proba = clf.predict_proba(X_test)
77
+
78
+ print("ROC AUC: ", roc_auc_score(y_test, y_proba[:, 1]))
79
+ print("Coefficients: ", clf.coef_)
80
+ print("Intercept: ", clf.intercept_)
81
+ print("Support: ", clf.support_)
82
+ ```
83
+
84
+ ### Feature Selection With Resampling
85
+
86
+
87
+ ```python
88
+ from sklearn.datasets import load_breast_cancer
89
+ from sklearn.metrics import roc_auc_score
90
+ from sklearn.model_selection import train_test_split
91
+
92
+ from l0l2learn import ResampledL0L2Classifier
93
+
94
+
95
+ X, y = load_breast_cancer(return_X_y=True, as_frame=True)
96
+ X_train, X_test, y_train, y_test = train_test_split(
97
+ X, y, stratify=y
98
+ )
99
+
100
+ clf = ResampledL0L2Classifier(
101
+ b=3,
102
+ param_grid={"lambd": [1.0]},
103
+ n_resamples=3
104
+ )
105
+
106
+ clf.fit(X_train, y_train)
107
+ y_proba = clf.predict_proba(X_test)
108
+
109
+ print("ROC AUC: ", roc_auc_score(y_test, y_proba[:, 1]))
110
+ print("Coefficients: ", clf.coef_)
111
+ print("Intercept: ", clf.intercept_)
112
+ print("Support: ", clf.support_)
113
+ print("VIFs: ", clf.variable_inclusion_frequencies_[clf.support_])
114
+ print("MSFs: ", clf.model_selection_frequencies_)
115
+ ```
116
+
117
+ ## Hyperparameters
118
+
119
+ ### Feature Costs
120
+
121
+ Feature-specific costs can be supplied through `c`:
122
+
123
+ ```python
124
+ clf = L0L2Classifier(c=[1, 2, 5])
125
+ ```
126
+
127
+ The optimization then accounts for some variables to be more expensive than others.
128
+
129
+ ### Feature Selection Budget
130
+
131
+ The feature selection budget is controlled through `b`:
132
+
133
+ ```python
134
+ clf = L0L2Classifier(b=5)
135
+ ```
136
+
137
+ When all feature costs are equal to one (the default), `b` directly controls the maximum number of selected features.
138
+
139
+ ### L2 Regularization
140
+
141
+ The L2 regularization strength is given by `lambd`:
142
+
143
+ ```python
144
+ clf = L0L2Classifier(lambd=0.1)
145
+ ```
146
+
147
+ Larger values can attenuate overfitting and increase robustness.
148
+
149
+ ### Number of Resamples
150
+
151
+ `n_resamples` determines how many resampled models are fitted:
152
+
153
+ ```python
154
+ clf = ResampledL0L2Classifier(b=5, n_resamples=99)
155
+ ```
156
+
157
+ Larger values can improve frequency estimates but increase runtime.
158
+
159
+ ### Other Hyperparameters
160
+
161
+ #### L0L2Classifier
162
+
163
+ - **`fit_intercept`**: Whether an intercept term is included in the logistic regression model.
164
+
165
+ - **`time_limit`**: Maximum runtime in seconds for the optimization problem.
166
+
167
+ - **`mosek_log`**: Enables printing of MOSEK solver output.
168
+
169
+ #### ResampledL0L2Classifier
170
+
171
+ - **`resampling`**: Controls whether and how rows, columns, both, or neither are resampled.
172
+
173
+ - **`n_row_subsamples`**: Number or fraction of observations used during row subsampling.
174
+
175
+ - **`n_column_subsamples`**: Number or fraction of features used during column subsampling.
176
+
177
+ - **`aggregation`**: Whether model selection or variable inclusion frequencies are used for aggregation.
178
+
179
+ - **`vif_threshold`**: Minimum variable inclusion frequency required when using `aggregation="VIF"`.
180
+
181
+ - **`estimator`**: Alternative base estimator used instead of the default `L0L2Classifier`.
182
+
183
+ - **`param_grid`**: Hyperparameter grid used for cross-validation when tuning `lambd`.
184
+
185
+ - **`cv`**: Cross-validation strategy used for hyperparameter tuning.
186
+
187
+ - **`scoring`**: Scoring metric used to select the best hyperparameter configuration.
188
+
189
+ - **`numerical_features`**: Specifies which DataFrame columns should be treated as numerical features.
190
+
191
+ - **`categorical_features`**: Specifies which DataFrame columns should be treated as categorical features.
192
+
193
+ - **`fit_intercept`**: Whether an intercept term is included in the logistic regression model.
194
+
195
+ - **`mosek_time_limit`**: Maximum runtime in seconds for each individual optimization problem.
196
+
197
+ - **`total_time_limit`**: Maximum runtime in seconds for the complete resampling procedure.
198
+
199
+ - **`max_consecutive_failures`**: Stops resampling if too many consecutive model fits fail.
200
+
201
+ - **`mosek_log`**: Enables printing of MOSEK solver output.
202
+
203
+ - **`n_jobs`**: Number of parallel workers used during resampling.
204
+
205
+ - **`random_state`**: Controls the randomness of resampling and cross-validation procedures.
206
+
207
+ ## License
208
+
209
+ This project is licensed under the [MIT License](https://github.com/ml-lab-htw/l0l2learn/blob/main/LICENSE). See the `LICENSE` file for details.
210
+
211
+ ## Authors
212
+
213
+ - Ricardo Knauer (HTW Berlin)
@@ -0,0 +1,182 @@
1
+ # l0l2learn
2
+
3
+ Feature selection for logistic regression using mixed-integer conic optimization. Unlike Lasso-based approaches, `l0l2learn` directly optimizes feature subsets under explicit cardinality or budget constraints.
4
+
5
+ ## Overview
6
+
7
+ `l0l2learn` is a Python package that provides sklearn-style estimators for cardinality- and budget-constrained feature selection in logistic regression. The package currently includes:
8
+
9
+ - **L0L2Classifier**: L0-constrained L2-regularized logistic regression
10
+ - **ResampledL0L2Classifier**: resampling-based feature selection with frequency-based aggregation to improve the selection stability
11
+
12
+ ## Installation
13
+
14
+ To install the package, use the following command:
15
+
16
+ ```sh
17
+ pip install l0l2learn
18
+ ```
19
+
20
+ Please check the [MOSEK website](https://www.mosek.com/) to request and set up a license for the conic solver.
21
+
22
+ ## Quick Start
23
+
24
+ ### Feature Selection Without Resampling
25
+
26
+ ```python
27
+ from sklearn.datasets import load_breast_cancer
28
+ from sklearn.metrics import roc_auc_score
29
+ from sklearn.model_selection import train_test_split
30
+
31
+ from l0l2learn import L0L2Classifier
32
+
33
+
34
+ X, y = load_breast_cancer(return_X_y=True, as_frame=True)
35
+ X_train, X_test, y_train, y_test = train_test_split(
36
+ X, y, stratify=y
37
+ )
38
+
39
+ clf = L0L2Classifier(
40
+ b=3,
41
+ lambd=1.0
42
+ )
43
+
44
+ clf.fit(X_train, y_train)
45
+ y_proba = clf.predict_proba(X_test)
46
+
47
+ print("ROC AUC: ", roc_auc_score(y_test, y_proba[:, 1]))
48
+ print("Coefficients: ", clf.coef_)
49
+ print("Intercept: ", clf.intercept_)
50
+ print("Support: ", clf.support_)
51
+ ```
52
+
53
+ ### Feature Selection With Resampling
54
+
55
+
56
+ ```python
57
+ from sklearn.datasets import load_breast_cancer
58
+ from sklearn.metrics import roc_auc_score
59
+ from sklearn.model_selection import train_test_split
60
+
61
+ from l0l2learn import ResampledL0L2Classifier
62
+
63
+
64
+ X, y = load_breast_cancer(return_X_y=True, as_frame=True)
65
+ X_train, X_test, y_train, y_test = train_test_split(
66
+ X, y, stratify=y
67
+ )
68
+
69
+ clf = ResampledL0L2Classifier(
70
+ b=3,
71
+ param_grid={"lambd": [1.0]},
72
+ n_resamples=3
73
+ )
74
+
75
+ clf.fit(X_train, y_train)
76
+ y_proba = clf.predict_proba(X_test)
77
+
78
+ print("ROC AUC: ", roc_auc_score(y_test, y_proba[:, 1]))
79
+ print("Coefficients: ", clf.coef_)
80
+ print("Intercept: ", clf.intercept_)
81
+ print("Support: ", clf.support_)
82
+ print("VIFs: ", clf.variable_inclusion_frequencies_[clf.support_])
83
+ print("MSFs: ", clf.model_selection_frequencies_)
84
+ ```
85
+
86
+ ## Hyperparameters
87
+
88
+ ### Feature Costs
89
+
90
+ Feature-specific costs can be supplied through `c`:
91
+
92
+ ```python
93
+ clf = L0L2Classifier(c=[1, 2, 5])
94
+ ```
95
+
96
+ The optimization then accounts for some variables to be more expensive than others.
97
+
98
+ ### Feature Selection Budget
99
+
100
+ The feature selection budget is controlled through `b`:
101
+
102
+ ```python
103
+ clf = L0L2Classifier(b=5)
104
+ ```
105
+
106
+ When all feature costs are equal to one (the default), `b` directly controls the maximum number of selected features.
107
+
108
+ ### L2 Regularization
109
+
110
+ The L2 regularization strength is given by `lambd`:
111
+
112
+ ```python
113
+ clf = L0L2Classifier(lambd=0.1)
114
+ ```
115
+
116
+ Larger values can attenuate overfitting and increase robustness.
117
+
118
+ ### Number of Resamples
119
+
120
+ `n_resamples` determines how many resampled models are fitted:
121
+
122
+ ```python
123
+ clf = ResampledL0L2Classifier(b=5, n_resamples=99)
124
+ ```
125
+
126
+ Larger values can improve frequency estimates but increase runtime.
127
+
128
+ ### Other Hyperparameters
129
+
130
+ #### L0L2Classifier
131
+
132
+ - **`fit_intercept`**: Whether an intercept term is included in the logistic regression model.
133
+
134
+ - **`time_limit`**: Maximum runtime in seconds for the optimization problem.
135
+
136
+ - **`mosek_log`**: Enables printing of MOSEK solver output.
137
+
138
+ #### ResampledL0L2Classifier
139
+
140
+ - **`resampling`**: Controls whether and how rows, columns, both, or neither are resampled.
141
+
142
+ - **`n_row_subsamples`**: Number or fraction of observations used during row subsampling.
143
+
144
+ - **`n_column_subsamples`**: Number or fraction of features used during column subsampling.
145
+
146
+ - **`aggregation`**: Whether model selection or variable inclusion frequencies are used for aggregation.
147
+
148
+ - **`vif_threshold`**: Minimum variable inclusion frequency required when using `aggregation="VIF"`.
149
+
150
+ - **`estimator`**: Alternative base estimator used instead of the default `L0L2Classifier`.
151
+
152
+ - **`param_grid`**: Hyperparameter grid used for cross-validation when tuning `lambd`.
153
+
154
+ - **`cv`**: Cross-validation strategy used for hyperparameter tuning.
155
+
156
+ - **`scoring`**: Scoring metric used to select the best hyperparameter configuration.
157
+
158
+ - **`numerical_features`**: Specifies which DataFrame columns should be treated as numerical features.
159
+
160
+ - **`categorical_features`**: Specifies which DataFrame columns should be treated as categorical features.
161
+
162
+ - **`fit_intercept`**: Whether an intercept term is included in the logistic regression model.
163
+
164
+ - **`mosek_time_limit`**: Maximum runtime in seconds for each individual optimization problem.
165
+
166
+ - **`total_time_limit`**: Maximum runtime in seconds for the complete resampling procedure.
167
+
168
+ - **`max_consecutive_failures`**: Stops resampling if too many consecutive model fits fail.
169
+
170
+ - **`mosek_log`**: Enables printing of MOSEK solver output.
171
+
172
+ - **`n_jobs`**: Number of parallel workers used during resampling.
173
+
174
+ - **`random_state`**: Controls the randomness of resampling and cross-validation procedures.
175
+
176
+ ## License
177
+
178
+ This project is licensed under the [MIT License](https://github.com/ml-lab-htw/l0l2learn/blob/main/LICENSE). See the `LICENSE` file for details.
179
+
180
+ ## Authors
181
+
182
+ - Ricardo Knauer (HTW Berlin)
@@ -0,0 +1,213 @@
1
+ Metadata-Version: 2.4
2
+ Name: l0l2learn
3
+ Version: 0.1.0
4
+ Summary: Cardinality- and budget-constrained feature selection for logistic regression using mixed-integer conic optimization
5
+ Home-page: https://github.com/ml-lab-htw/l0l2learn
6
+ Author: Ricardo Knauer
7
+ Author-email: ricardo.knauer@htw-berlin.de
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.10
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: joblib
15
+ Requires-Dist: mosek
16
+ Requires-Dist: numpy
17
+ Requires-Dist: pandas
18
+ Requires-Dist: scikit-learn
19
+ Requires-Dist: scipy
20
+ Requires-Dist: tqdm
21
+ Dynamic: author
22
+ Dynamic: author-email
23
+ Dynamic: classifier
24
+ Dynamic: description
25
+ Dynamic: description-content-type
26
+ Dynamic: home-page
27
+ Dynamic: license-file
28
+ Dynamic: requires-dist
29
+ Dynamic: requires-python
30
+ Dynamic: summary
31
+
32
+ # l0l2learn
33
+
34
+ Feature selection for logistic regression using mixed-integer conic optimization. Unlike Lasso-based approaches, `l0l2learn` directly optimizes feature subsets under explicit cardinality or budget constraints.
35
+
36
+ ## Overview
37
+
38
+ `l0l2learn` is a Python package that provides sklearn-style estimators for cardinality- and budget-constrained feature selection in logistic regression. The package currently includes:
39
+
40
+ - **L0L2Classifier**: L0-constrained L2-regularized logistic regression
41
+ - **ResampledL0L2Classifier**: resampling-based feature selection with frequency-based aggregation to improve the selection stability
42
+
43
+ ## Installation
44
+
45
+ To install the package, use the following command:
46
+
47
+ ```sh
48
+ pip install l0l2learn
49
+ ```
50
+
51
+ Please check the [MOSEK website](https://www.mosek.com/) to request and set up a license for the conic solver.
52
+
53
+ ## Quick Start
54
+
55
+ ### Feature Selection Without Resampling
56
+
57
+ ```python
58
+ from sklearn.datasets import load_breast_cancer
59
+ from sklearn.metrics import roc_auc_score
60
+ from sklearn.model_selection import train_test_split
61
+
62
+ from l0l2learn import L0L2Classifier
63
+
64
+
65
+ X, y = load_breast_cancer(return_X_y=True, as_frame=True)
66
+ X_train, X_test, y_train, y_test = train_test_split(
67
+ X, y, stratify=y
68
+ )
69
+
70
+ clf = L0L2Classifier(
71
+ b=3,
72
+ lambd=1.0
73
+ )
74
+
75
+ clf.fit(X_train, y_train)
76
+ y_proba = clf.predict_proba(X_test)
77
+
78
+ print("ROC AUC: ", roc_auc_score(y_test, y_proba[:, 1]))
79
+ print("Coefficients: ", clf.coef_)
80
+ print("Intercept: ", clf.intercept_)
81
+ print("Support: ", clf.support_)
82
+ ```
83
+
84
+ ### Feature Selection With Resampling
85
+
86
+
87
+ ```python
88
+ from sklearn.datasets import load_breast_cancer
89
+ from sklearn.metrics import roc_auc_score
90
+ from sklearn.model_selection import train_test_split
91
+
92
+ from l0l2learn import ResampledL0L2Classifier
93
+
94
+
95
+ X, y = load_breast_cancer(return_X_y=True, as_frame=True)
96
+ X_train, X_test, y_train, y_test = train_test_split(
97
+ X, y, stratify=y
98
+ )
99
+
100
+ clf = ResampledL0L2Classifier(
101
+ b=3,
102
+ param_grid={"lambd": [1.0]},
103
+ n_resamples=3
104
+ )
105
+
106
+ clf.fit(X_train, y_train)
107
+ y_proba = clf.predict_proba(X_test)
108
+
109
+ print("ROC AUC: ", roc_auc_score(y_test, y_proba[:, 1]))
110
+ print("Coefficients: ", clf.coef_)
111
+ print("Intercept: ", clf.intercept_)
112
+ print("Support: ", clf.support_)
113
+ print("VIFs: ", clf.variable_inclusion_frequencies_[clf.support_])
114
+ print("MSFs: ", clf.model_selection_frequencies_)
115
+ ```
116
+
117
+ ## Hyperparameters
118
+
119
+ ### Feature Costs
120
+
121
+ Feature-specific costs can be supplied through `c`:
122
+
123
+ ```python
124
+ clf = L0L2Classifier(c=[1, 2, 5])
125
+ ```
126
+
127
+ The optimization then accounts for some variables to be more expensive than others.
128
+
129
+ ### Feature Selection Budget
130
+
131
+ The feature selection budget is controlled through `b`:
132
+
133
+ ```python
134
+ clf = L0L2Classifier(b=5)
135
+ ```
136
+
137
+ When all feature costs are equal to one (the default), `b` directly controls the maximum number of selected features.
138
+
139
+ ### L2 Regularization
140
+
141
+ The L2 regularization strength is given by `lambd`:
142
+
143
+ ```python
144
+ clf = L0L2Classifier(lambd=0.1)
145
+ ```
146
+
147
+ Larger values can attenuate overfitting and increase robustness.
148
+
149
+ ### Number of Resamples
150
+
151
+ `n_resamples` determines how many resampled models are fitted:
152
+
153
+ ```python
154
+ clf = ResampledL0L2Classifier(b=5, n_resamples=99)
155
+ ```
156
+
157
+ Larger values can improve frequency estimates but increase runtime.
158
+
159
+ ### Other Hyperparameters
160
+
161
+ #### L0L2Classifier
162
+
163
+ - **`fit_intercept`**: Whether an intercept term is included in the logistic regression model.
164
+
165
+ - **`time_limit`**: Maximum runtime in seconds for the optimization problem.
166
+
167
+ - **`mosek_log`**: Enables printing of MOSEK solver output.
168
+
169
+ #### ResampledL0L2Classifier
170
+
171
+ - **`resampling`**: Controls whether and how rows, columns, both, or neither are resampled.
172
+
173
+ - **`n_row_subsamples`**: Number or fraction of observations used during row subsampling.
174
+
175
+ - **`n_column_subsamples`**: Number or fraction of features used during column subsampling.
176
+
177
+ - **`aggregation`**: Whether model selection or variable inclusion frequencies are used for aggregation.
178
+
179
+ - **`vif_threshold`**: Minimum variable inclusion frequency required when using `aggregation="VIF"`.
180
+
181
+ - **`estimator`**: Alternative base estimator used instead of the default `L0L2Classifier`.
182
+
183
+ - **`param_grid`**: Hyperparameter grid used for cross-validation when tuning `lambd`.
184
+
185
+ - **`cv`**: Cross-validation strategy used for hyperparameter tuning.
186
+
187
+ - **`scoring`**: Scoring metric used to select the best hyperparameter configuration.
188
+
189
+ - **`numerical_features`**: Specifies which DataFrame columns should be treated as numerical features.
190
+
191
+ - **`categorical_features`**: Specifies which DataFrame columns should be treated as categorical features.
192
+
193
+ - **`fit_intercept`**: Whether an intercept term is included in the logistic regression model.
194
+
195
+ - **`mosek_time_limit`**: Maximum runtime in seconds for each individual optimization problem.
196
+
197
+ - **`total_time_limit`**: Maximum runtime in seconds for the complete resampling procedure.
198
+
199
+ - **`max_consecutive_failures`**: Stops resampling if too many consecutive model fits fail.
200
+
201
+ - **`mosek_log`**: Enables printing of MOSEK solver output.
202
+
203
+ - **`n_jobs`**: Number of parallel workers used during resampling.
204
+
205
+ - **`random_state`**: Controls the randomness of resampling and cross-validation procedures.
206
+
207
+ ## License
208
+
209
+ This project is licensed under the [MIT License](https://github.com/ml-lab-htw/l0l2learn/blob/main/LICENSE). See the `LICENSE` file for details.
210
+
211
+ ## Authors
212
+
213
+ - Ricardo Knauer (HTW Berlin)
@@ -0,0 +1,8 @@
1
+ LICENSE
2
+ README.md
3
+ setup.py
4
+ l0l2learn.egg-info/PKG-INFO
5
+ l0l2learn.egg-info/SOURCES.txt
6
+ l0l2learn.egg-info/dependency_links.txt
7
+ l0l2learn.egg-info/requires.txt
8
+ l0l2learn.egg-info/top_level.txt
@@ -0,0 +1,7 @@
1
+ joblib
2
+ mosek
3
+ numpy
4
+ pandas
5
+ scikit-learn
6
+ scipy
7
+ tqdm
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,30 @@
1
+ from pathlib import Path
2
+ from setuptools import setup, find_packages
3
+
4
+
5
+ setup(
6
+ name="l0l2learn",
7
+ version="0.1.0",
8
+ description="Cardinality- and budget-constrained feature selection for logistic regression using mixed-integer conic optimization",
9
+ author="Ricardo Knauer",
10
+ author_email="ricardo.knauer@htw-berlin.de",
11
+ url="https://github.com/ml-lab-htw/l0l2learn",
12
+ packages=find_packages(),
13
+ install_requires=[
14
+ "joblib",
15
+ "mosek",
16
+ "numpy",
17
+ "pandas",
18
+ "scikit-learn",
19
+ "scipy",
20
+ "tqdm"
21
+ ],
22
+ long_description=Path("README.md").read_text(encoding="utf-8"),
23
+ long_description_content_type="text/markdown",
24
+ classifiers=[
25
+ "Programming Language :: Python :: 3",
26
+ "License :: OSI Approved :: MIT License",
27
+ "Operating System :: OS Independent",
28
+ ],
29
+ python_requires=">=3.10",
30
+ )