easy_ml 0.1.4 → 0.2.0.pre.rc1

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.
Files changed (239) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +234 -26
  3. data/Rakefile +45 -0
  4. data/app/controllers/easy_ml/application_controller.rb +67 -0
  5. data/app/controllers/easy_ml/columns_controller.rb +38 -0
  6. data/app/controllers/easy_ml/datasets_controller.rb +156 -0
  7. data/app/controllers/easy_ml/datasources_controller.rb +88 -0
  8. data/app/controllers/easy_ml/deploys_controller.rb +20 -0
  9. data/app/controllers/easy_ml/models_controller.rb +151 -0
  10. data/app/controllers/easy_ml/retraining_runs_controller.rb +19 -0
  11. data/app/controllers/easy_ml/settings_controller.rb +59 -0
  12. data/app/frontend/components/AlertProvider.tsx +108 -0
  13. data/app/frontend/components/DatasetPreview.tsx +161 -0
  14. data/app/frontend/components/EmptyState.tsx +28 -0
  15. data/app/frontend/components/ModelCard.tsx +255 -0
  16. data/app/frontend/components/ModelDetails.tsx +334 -0
  17. data/app/frontend/components/ModelForm.tsx +384 -0
  18. data/app/frontend/components/Navigation.tsx +300 -0
  19. data/app/frontend/components/Pagination.tsx +72 -0
  20. data/app/frontend/components/Popover.tsx +55 -0
  21. data/app/frontend/components/PredictionStream.tsx +105 -0
  22. data/app/frontend/components/ScheduleModal.tsx +726 -0
  23. data/app/frontend/components/SearchInput.tsx +23 -0
  24. data/app/frontend/components/SearchableSelect.tsx +132 -0
  25. data/app/frontend/components/dataset/AutosaveIndicator.tsx +39 -0
  26. data/app/frontend/components/dataset/ColumnConfigModal.tsx +431 -0
  27. data/app/frontend/components/dataset/ColumnFilters.tsx +256 -0
  28. data/app/frontend/components/dataset/ColumnList.tsx +101 -0
  29. data/app/frontend/components/dataset/FeatureConfigPopover.tsx +57 -0
  30. data/app/frontend/components/dataset/FeaturePicker.tsx +205 -0
  31. data/app/frontend/components/dataset/PreprocessingConfig.tsx +704 -0
  32. data/app/frontend/components/dataset/SplitConfigurator.tsx +120 -0
  33. data/app/frontend/components/dataset/splitters/DateSplitter.tsx +58 -0
  34. data/app/frontend/components/dataset/splitters/KFoldSplitter.tsx +68 -0
  35. data/app/frontend/components/dataset/splitters/LeavePOutSplitter.tsx +29 -0
  36. data/app/frontend/components/dataset/splitters/PredefinedSplitter.tsx +146 -0
  37. data/app/frontend/components/dataset/splitters/RandomSplitter.tsx +85 -0
  38. data/app/frontend/components/dataset/splitters/StratifiedSplitter.tsx +79 -0
  39. data/app/frontend/components/dataset/splitters/constants.ts +77 -0
  40. data/app/frontend/components/dataset/splitters/types.ts +168 -0
  41. data/app/frontend/components/dataset/splitters/utils.ts +53 -0
  42. data/app/frontend/components/features/CodeEditor.tsx +46 -0
  43. data/app/frontend/components/features/DataPreview.tsx +150 -0
  44. data/app/frontend/components/features/FeatureCard.tsx +88 -0
  45. data/app/frontend/components/features/FeatureForm.tsx +235 -0
  46. data/app/frontend/components/features/FeatureGroupCard.tsx +54 -0
  47. data/app/frontend/components/settings/PluginSettings.tsx +81 -0
  48. data/app/frontend/components/ui/badge.tsx +44 -0
  49. data/app/frontend/components/ui/collapsible.tsx +9 -0
  50. data/app/frontend/components/ui/scroll-area.tsx +46 -0
  51. data/app/frontend/components/ui/separator.tsx +29 -0
  52. data/app/frontend/entrypoints/App.tsx +40 -0
  53. data/app/frontend/entrypoints/Application.tsx +24 -0
  54. data/app/frontend/hooks/useAutosave.ts +61 -0
  55. data/app/frontend/layouts/Layout.tsx +38 -0
  56. data/app/frontend/lib/utils.ts +6 -0
  57. data/app/frontend/mockData.ts +272 -0
  58. data/app/frontend/pages/DatasetDetailsPage.tsx +103 -0
  59. data/app/frontend/pages/DatasetsPage.tsx +261 -0
  60. data/app/frontend/pages/DatasourceFormPage.tsx +147 -0
  61. data/app/frontend/pages/DatasourcesPage.tsx +261 -0
  62. data/app/frontend/pages/EditModelPage.tsx +45 -0
  63. data/app/frontend/pages/EditTransformationPage.tsx +56 -0
  64. data/app/frontend/pages/ModelsPage.tsx +115 -0
  65. data/app/frontend/pages/NewDatasetPage.tsx +366 -0
  66. data/app/frontend/pages/NewModelPage.tsx +45 -0
  67. data/app/frontend/pages/NewTransformationPage.tsx +43 -0
  68. data/app/frontend/pages/SettingsPage.tsx +272 -0
  69. data/app/frontend/pages/ShowModelPage.tsx +30 -0
  70. data/app/frontend/pages/TransformationsPage.tsx +95 -0
  71. data/app/frontend/styles/application.css +100 -0
  72. data/app/frontend/types/dataset.ts +146 -0
  73. data/app/frontend/types/datasource.ts +33 -0
  74. data/app/frontend/types/preprocessing.ts +1 -0
  75. data/app/frontend/types.ts +113 -0
  76. data/app/helpers/easy_ml/application_helper.rb +10 -0
  77. data/app/jobs/easy_ml/application_job.rb +21 -0
  78. data/app/jobs/easy_ml/batch_job.rb +46 -0
  79. data/app/jobs/easy_ml/compute_feature_job.rb +19 -0
  80. data/app/jobs/easy_ml/deploy_job.rb +13 -0
  81. data/app/jobs/easy_ml/finalize_feature_job.rb +15 -0
  82. data/app/jobs/easy_ml/refresh_dataset_job.rb +32 -0
  83. data/app/jobs/easy_ml/schedule_retraining_job.rb +11 -0
  84. data/app/jobs/easy_ml/sync_datasource_job.rb +17 -0
  85. data/app/jobs/easy_ml/training_job.rb +62 -0
  86. data/app/models/easy_ml/adapters/base_adapter.rb +45 -0
  87. data/app/models/easy_ml/adapters/polars_adapter.rb +77 -0
  88. data/app/models/easy_ml/cleaner.rb +82 -0
  89. data/app/models/easy_ml/column.rb +124 -0
  90. data/app/models/easy_ml/column_history.rb +30 -0
  91. data/app/models/easy_ml/column_list.rb +122 -0
  92. data/app/models/easy_ml/concerns/configurable.rb +61 -0
  93. data/app/models/easy_ml/concerns/versionable.rb +19 -0
  94. data/app/models/easy_ml/dataset.rb +767 -0
  95. data/app/models/easy_ml/dataset_history.rb +56 -0
  96. data/app/models/easy_ml/datasource.rb +182 -0
  97. data/app/models/easy_ml/datasource_history.rb +24 -0
  98. data/app/models/easy_ml/datasources/base_datasource.rb +54 -0
  99. data/app/models/easy_ml/datasources/file_datasource.rb +58 -0
  100. data/app/models/easy_ml/datasources/polars_datasource.rb +89 -0
  101. data/app/models/easy_ml/datasources/s3_datasource.rb +97 -0
  102. data/app/models/easy_ml/deploy.rb +114 -0
  103. data/app/models/easy_ml/event.rb +79 -0
  104. data/app/models/easy_ml/feature.rb +437 -0
  105. data/app/models/easy_ml/feature_history.rb +38 -0
  106. data/app/models/easy_ml/model.rb +575 -41
  107. data/app/models/easy_ml/model_file.rb +133 -0
  108. data/app/models/easy_ml/model_file_history.rb +24 -0
  109. data/app/models/easy_ml/model_history.rb +51 -0
  110. data/app/models/easy_ml/models/base_model.rb +58 -0
  111. data/app/models/easy_ml/models/hyperparameters/base.rb +99 -0
  112. data/app/models/easy_ml/models/hyperparameters/xgboost/dart.rb +82 -0
  113. data/app/models/easy_ml/models/hyperparameters/xgboost/gblinear.rb +82 -0
  114. data/app/models/easy_ml/models/hyperparameters/xgboost/gbtree.rb +97 -0
  115. data/app/models/easy_ml/models/hyperparameters/xgboost.rb +71 -0
  116. data/app/models/easy_ml/models/xgboost/evals_callback.rb +138 -0
  117. data/app/models/easy_ml/models/xgboost/progress_callback.rb +39 -0
  118. data/app/models/easy_ml/models/xgboost.rb +544 -5
  119. data/app/models/easy_ml/prediction.rb +44 -0
  120. data/app/models/easy_ml/retraining_job.rb +278 -0
  121. data/app/models/easy_ml/retraining_run.rb +184 -0
  122. data/app/models/easy_ml/settings.rb +37 -0
  123. data/app/models/easy_ml/splitter.rb +90 -0
  124. data/app/models/easy_ml/splitters/base_splitter.rb +28 -0
  125. data/app/models/easy_ml/splitters/date_splitter.rb +91 -0
  126. data/app/models/easy_ml/splitters/predefined_splitter.rb +74 -0
  127. data/app/models/easy_ml/splitters/random_splitter.rb +82 -0
  128. data/app/models/easy_ml/tuner_job.rb +56 -0
  129. data/app/models/easy_ml/tuner_run.rb +31 -0
  130. data/app/models/splitter_history.rb +6 -0
  131. data/app/serializers/easy_ml/column_serializer.rb +27 -0
  132. data/app/serializers/easy_ml/dataset_serializer.rb +73 -0
  133. data/app/serializers/easy_ml/datasource_serializer.rb +64 -0
  134. data/app/serializers/easy_ml/feature_serializer.rb +27 -0
  135. data/app/serializers/easy_ml/model_serializer.rb +90 -0
  136. data/app/serializers/easy_ml/retraining_job_serializer.rb +22 -0
  137. data/app/serializers/easy_ml/retraining_run_serializer.rb +39 -0
  138. data/app/serializers/easy_ml/settings_serializer.rb +9 -0
  139. data/app/views/layouts/easy_ml/application.html.erb +15 -0
  140. data/config/initializers/resque.rb +3 -0
  141. data/config/resque-pool.yml +6 -0
  142. data/config/routes.rb +39 -0
  143. data/config/spring.rb +1 -0
  144. data/config/vite.json +15 -0
  145. data/lib/easy_ml/configuration.rb +64 -0
  146. data/lib/easy_ml/core/evaluators/base_evaluator.rb +53 -0
  147. data/lib/easy_ml/core/evaluators/classification_evaluators.rb +126 -0
  148. data/lib/easy_ml/core/evaluators/regression_evaluators.rb +66 -0
  149. data/lib/easy_ml/core/model_evaluator.rb +161 -89
  150. data/lib/easy_ml/core/tuner/adapters/base_adapter.rb +28 -18
  151. data/lib/easy_ml/core/tuner/adapters/xgboost_adapter.rb +4 -25
  152. data/lib/easy_ml/core/tuner.rb +123 -62
  153. data/lib/easy_ml/core.rb +0 -3
  154. data/lib/easy_ml/core_ext/hash.rb +24 -0
  155. data/lib/easy_ml/core_ext/pathname.rb +11 -5
  156. data/lib/easy_ml/data/date_converter.rb +90 -0
  157. data/lib/easy_ml/data/filter_extensions.rb +31 -0
  158. data/lib/easy_ml/data/polars_column.rb +126 -0
  159. data/lib/easy_ml/data/polars_reader.rb +297 -0
  160. data/lib/easy_ml/data/preprocessor.rb +280 -142
  161. data/lib/easy_ml/data/simple_imputer.rb +255 -0
  162. data/lib/easy_ml/data/splits/file_split.rb +252 -0
  163. data/lib/easy_ml/data/splits/in_memory_split.rb +54 -0
  164. data/lib/easy_ml/data/splits/split.rb +95 -0
  165. data/lib/easy_ml/data/splits.rb +9 -0
  166. data/lib/easy_ml/data/statistics_learner.rb +93 -0
  167. data/lib/easy_ml/data/synced_directory.rb +341 -0
  168. data/lib/easy_ml/data.rb +6 -2
  169. data/lib/easy_ml/engine.rb +105 -6
  170. data/lib/easy_ml/feature_store.rb +227 -0
  171. data/lib/easy_ml/features.rb +61 -0
  172. data/lib/easy_ml/initializers/inflections.rb +17 -3
  173. data/lib/easy_ml/logging.rb +2 -2
  174. data/lib/easy_ml/predict.rb +74 -0
  175. data/lib/easy_ml/railtie/generators/migration/migration_generator.rb +192 -36
  176. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_column_histories.rb.tt +9 -0
  177. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_columns.rb.tt +25 -0
  178. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_dataset_histories.rb.tt +9 -0
  179. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_datasets.rb.tt +31 -0
  180. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_datasource_histories.rb.tt +9 -0
  181. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_datasources.rb.tt +16 -0
  182. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_deploys.rb.tt +24 -0
  183. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_events.rb.tt +20 -0
  184. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_feature_histories.rb.tt +14 -0
  185. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_features.rb.tt +32 -0
  186. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_model_file_histories.rb.tt +9 -0
  187. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_model_files.rb.tt +17 -0
  188. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_model_histories.rb.tt +9 -0
  189. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_models.rb.tt +20 -9
  190. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_predictions.rb.tt +17 -0
  191. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_retraining_jobs.rb.tt +77 -0
  192. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_settings.rb.tt +9 -0
  193. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_splitter_histories.rb.tt +9 -0
  194. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_splitters.rb.tt +15 -0
  195. data/lib/easy_ml/railtie/templates/migration/create_easy_ml_tuner_jobs.rb.tt +40 -0
  196. data/lib/easy_ml/support/est.rb +5 -1
  197. data/lib/easy_ml/support/file_rotate.rb +79 -15
  198. data/lib/easy_ml/support/file_support.rb +9 -0
  199. data/lib/easy_ml/support/local_file.rb +24 -0
  200. data/lib/easy_ml/support/lockable.rb +62 -0
  201. data/lib/easy_ml/support/synced_file.rb +103 -0
  202. data/lib/easy_ml/support/utc.rb +5 -1
  203. data/lib/easy_ml/support.rb +6 -3
  204. data/lib/easy_ml/version.rb +4 -1
  205. data/lib/easy_ml.rb +7 -2
  206. metadata +355 -72
  207. data/app/models/easy_ml/models.rb +0 -5
  208. data/lib/easy_ml/core/model.rb +0 -30
  209. data/lib/easy_ml/core/model_core.rb +0 -181
  210. data/lib/easy_ml/core/models/hyperparameters/base.rb +0 -34
  211. data/lib/easy_ml/core/models/hyperparameters/xgboost.rb +0 -19
  212. data/lib/easy_ml/core/models/xgboost.rb +0 -10
  213. data/lib/easy_ml/core/models/xgboost_core.rb +0 -220
  214. data/lib/easy_ml/core/models.rb +0 -10
  215. data/lib/easy_ml/core/uploaders/model_uploader.rb +0 -24
  216. data/lib/easy_ml/core/uploaders.rb +0 -7
  217. data/lib/easy_ml/data/dataloader.rb +0 -6
  218. data/lib/easy_ml/data/dataset/data/preprocessor/statistics.json +0 -31
  219. data/lib/easy_ml/data/dataset/data/sample_info.json +0 -1
  220. data/lib/easy_ml/data/dataset/dataset/files/sample_info.json +0 -1
  221. data/lib/easy_ml/data/dataset/splits/file_split.rb +0 -140
  222. data/lib/easy_ml/data/dataset/splits/in_memory_split.rb +0 -49
  223. data/lib/easy_ml/data/dataset/splits/split.rb +0 -98
  224. data/lib/easy_ml/data/dataset/splits.rb +0 -11
  225. data/lib/easy_ml/data/dataset/splitters/date_splitter.rb +0 -43
  226. data/lib/easy_ml/data/dataset/splitters.rb +0 -9
  227. data/lib/easy_ml/data/dataset.rb +0 -430
  228. data/lib/easy_ml/data/datasource/datasource_factory.rb +0 -60
  229. data/lib/easy_ml/data/datasource/file_datasource.rb +0 -40
  230. data/lib/easy_ml/data/datasource/merged_datasource.rb +0 -64
  231. data/lib/easy_ml/data/datasource/polars_datasource.rb +0 -41
  232. data/lib/easy_ml/data/datasource/s3_datasource.rb +0 -89
  233. data/lib/easy_ml/data/datasource.rb +0 -33
  234. data/lib/easy_ml/data/preprocessor/preprocessor.rb +0 -205
  235. data/lib/easy_ml/data/preprocessor/simple_imputer.rb +0 -402
  236. data/lib/easy_ml/deployment.rb +0 -5
  237. data/lib/easy_ml/support/synced_directory.rb +0 -134
  238. data/lib/easy_ml/transforms.rb +0 -29
  239. /data/{lib/easy_ml/core → app/models/easy_ml}/models/hyperparameters.rb +0 -0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_ml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.0.pre.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Shollenberger
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-10-18 00:00:00.000000000 Z
11
+ date: 2025-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activerecord-import
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.8.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.8.1
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: activesupport
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -39,67 +53,89 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
- name: carrierwave
56
+ name: awesome_print
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: '2.0'
48
- - - "<"
49
- - !ruby/object:Gem::Version
50
- version: '4'
61
+ version: '0'
51
62
  type: :runtime
52
63
  prerelease: false
53
64
  version_requirements: !ruby/object:Gem::Requirement
54
65
  requirements:
55
66
  - - ">="
56
67
  - !ruby/object:Gem::Version
57
- version: '2.0'
58
- - - "<"
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: aws-sdk
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
59
74
  - !ruby/object:Gem::Version
60
- version: '4'
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
61
83
  - !ruby/object:Gem::Dependency
62
- name: fog
84
+ name: date
63
85
  requirement: !ruby/object:Gem::Requirement
64
86
  requirements:
65
87
  - - "~>"
66
88
  - !ruby/object:Gem::Version
67
- version: '1.42'
89
+ version: 3.4.1
68
90
  type: :runtime
69
91
  prerelease: false
70
92
  version_requirements: !ruby/object:Gem::Requirement
71
93
  requirements:
72
94
  - - "~>"
73
95
  - !ruby/object:Gem::Version
74
- version: '1.42'
96
+ version: 3.4.1
75
97
  - !ruby/object:Gem::Dependency
76
- name: fog-aws
98
+ name: historiographer
77
99
  requirement: !ruby/object:Gem::Requirement
78
100
  requirements:
79
101
  - - "~>"
80
102
  - !ruby/object:Gem::Version
81
- version: '2.0'
103
+ version: 4.1.14
82
104
  type: :runtime
83
105
  prerelease: false
84
106
  version_requirements: !ruby/object:Gem::Requirement
85
107
  requirements:
86
108
  - - "~>"
87
109
  - !ruby/object:Gem::Version
88
- version: '2.0'
110
+ version: 4.1.14
89
111
  - !ruby/object:Gem::Dependency
90
- name: glue_gun_dsl
112
+ name: inertia_rails
91
113
  requirement: !ruby/object:Gem::Requirement
92
114
  requirements:
93
- - - "~>"
115
+ - - ">="
94
116
  - !ruby/object:Gem::Version
95
- version: 0.1.19
117
+ version: '0'
96
118
  type: :runtime
97
119
  prerelease: false
98
120
  version_requirements: !ruby/object:Gem::Requirement
99
121
  requirements:
100
- - - "~>"
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: jsonapi-serializer
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
101
137
  - !ruby/object:Gem::Version
102
- version: 0.1.19
138
+ version: '0'
103
139
  - !ruby/object:Gem::Dependency
104
140
  name: numo-narray
105
141
  requirement: !ruby/object:Gem::Requirement
@@ -115,7 +151,21 @@ dependencies:
115
151
  - !ruby/object:Gem::Version
116
152
  version: '0'
117
153
  - !ruby/object:Gem::Dependency
118
- name: polars-df
154
+ name: numpy
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: parallel
119
169
  requirement: !ruby/object:Gem::Requirement
120
170
  requirements:
121
171
  - - ">="
@@ -128,6 +178,20 @@ dependencies:
128
178
  - - ">="
129
179
  - !ruby/object:Gem::Version
130
180
  version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: polars-df
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 0.15.0
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 0.15.0
131
195
  - !ruby/object:Gem::Dependency
132
196
  name: pycall
133
197
  requirement: !ruby/object:Gem::Requirement
@@ -171,21 +235,21 @@ dependencies:
171
235
  - !ruby/object:Gem::Version
172
236
  version: '0'
173
237
  - !ruby/object:Gem::Dependency
174
- name: wandb
238
+ name: resque
175
239
  requirement: !ruby/object:Gem::Requirement
176
240
  requirements:
177
- - - "~>"
241
+ - - ">="
178
242
  - !ruby/object:Gem::Version
179
- version: 0.1.6
243
+ version: '0'
180
244
  type: :runtime
181
245
  prerelease: false
182
246
  version_requirements: !ruby/object:Gem::Requirement
183
247
  requirements:
184
- - - "~>"
248
+ - - ">="
185
249
  - !ruby/object:Gem::Version
186
- version: 0.1.6
250
+ version: '0'
187
251
  - !ruby/object:Gem::Dependency
188
- name: xgb
252
+ name: resque-batched-job
189
253
  requirement: !ruby/object:Gem::Requirement
190
254
  requirements:
191
255
  - - ">="
@@ -199,13 +263,13 @@ dependencies:
199
263
  - !ruby/object:Gem::Version
200
264
  version: '0'
201
265
  - !ruby/object:Gem::Dependency
202
- name: annotate
266
+ name: resque-pool
203
267
  requirement: !ruby/object:Gem::Requirement
204
268
  requirements:
205
269
  - - ">="
206
270
  - !ruby/object:Gem::Version
207
271
  version: '0'
208
- type: :development
272
+ type: :runtime
209
273
  prerelease: false
210
274
  version_requirements: !ruby/object:Gem::Requirement
211
275
  requirements:
@@ -213,7 +277,77 @@ dependencies:
213
277
  - !ruby/object:Gem::Version
214
278
  version: '0'
215
279
  - !ruby/object:Gem::Dependency
216
- name: appraisal
280
+ name: suo
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ type: :runtime
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ version: '0'
293
+ - !ruby/object:Gem::Dependency
294
+ name: tailwindcss-rails
295
+ requirement: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: '0'
300
+ type: :runtime
301
+ prerelease: false
302
+ version_requirements: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - ">="
305
+ - !ruby/object:Gem::Version
306
+ version: '0'
307
+ - !ruby/object:Gem::Dependency
308
+ name: vite_rails
309
+ requirement: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: '0'
314
+ type: :runtime
315
+ prerelease: false
316
+ version_requirements: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - ">="
319
+ - !ruby/object:Gem::Version
320
+ version: '0'
321
+ - !ruby/object:Gem::Dependency
322
+ name: wandb
323
+ requirement: !ruby/object:Gem::Requirement
324
+ requirements:
325
+ - - "~>"
326
+ - !ruby/object:Gem::Version
327
+ version: 0.1.12
328
+ type: :runtime
329
+ prerelease: false
330
+ version_requirements: !ruby/object:Gem::Requirement
331
+ requirements:
332
+ - - "~>"
333
+ - !ruby/object:Gem::Version
334
+ version: 0.1.12
335
+ - !ruby/object:Gem::Dependency
336
+ name: xgb
337
+ requirement: !ruby/object:Gem::Requirement
338
+ requirements:
339
+ - - "~>"
340
+ - !ruby/object:Gem::Version
341
+ version: 0.9.0
342
+ type: :runtime
343
+ prerelease: false
344
+ version_requirements: !ruby/object:Gem::Requirement
345
+ requirements:
346
+ - - "~>"
347
+ - !ruby/object:Gem::Version
348
+ version: 0.9.0
349
+ - !ruby/object:Gem::Dependency
350
+ name: annotate
217
351
  requirement: !ruby/object:Gem::Requirement
218
352
  requirements:
219
353
  - - ">="
@@ -227,7 +361,7 @@ dependencies:
227
361
  - !ruby/object:Gem::Version
228
362
  version: '0'
229
363
  - !ruby/object:Gem::Dependency
230
- name: database_cleaner-active_record
364
+ name: appraisal
231
365
  requirement: !ruby/object:Gem::Requirement
232
366
  requirements:
233
367
  - - ">="
@@ -283,19 +417,19 @@ dependencies:
283
417
  - !ruby/object:Gem::Version
284
418
  version: '0'
285
419
  - !ruby/object:Gem::Dependency
286
- name: rspec
420
+ name: sprockets-rails
287
421
  requirement: !ruby/object:Gem::Requirement
288
422
  requirements:
289
- - - "~>"
423
+ - - ">="
290
424
  - !ruby/object:Gem::Version
291
- version: '3.0'
425
+ version: '0'
292
426
  type: :development
293
427
  prerelease: false
294
428
  version_requirements: !ruby/object:Gem::Requirement
295
429
  requirements:
296
- - - "~>"
430
+ - - ">="
297
431
  - !ruby/object:Gem::Version
298
- version: '3.0'
432
+ version: '0'
299
433
  description: High level plug-and-play interface for composing Machine Learning applications
300
434
  email:
301
435
  - brett.shollenberger@gmail.com
@@ -305,65 +439,214 @@ extra_rdoc_files: []
305
439
  files:
306
440
  - README.md
307
441
  - Rakefile
442
+ - app/controllers/easy_ml/application_controller.rb
443
+ - app/controllers/easy_ml/columns_controller.rb
444
+ - app/controllers/easy_ml/datasets_controller.rb
445
+ - app/controllers/easy_ml/datasources_controller.rb
446
+ - app/controllers/easy_ml/deploys_controller.rb
447
+ - app/controllers/easy_ml/models_controller.rb
448
+ - app/controllers/easy_ml/retraining_runs_controller.rb
449
+ - app/controllers/easy_ml/settings_controller.rb
450
+ - app/frontend/components/AlertProvider.tsx
451
+ - app/frontend/components/DatasetPreview.tsx
452
+ - app/frontend/components/EmptyState.tsx
453
+ - app/frontend/components/ModelCard.tsx
454
+ - app/frontend/components/ModelDetails.tsx
455
+ - app/frontend/components/ModelForm.tsx
456
+ - app/frontend/components/Navigation.tsx
457
+ - app/frontend/components/Pagination.tsx
458
+ - app/frontend/components/Popover.tsx
459
+ - app/frontend/components/PredictionStream.tsx
460
+ - app/frontend/components/ScheduleModal.tsx
461
+ - app/frontend/components/SearchInput.tsx
462
+ - app/frontend/components/SearchableSelect.tsx
463
+ - app/frontend/components/dataset/AutosaveIndicator.tsx
464
+ - app/frontend/components/dataset/ColumnConfigModal.tsx
465
+ - app/frontend/components/dataset/ColumnFilters.tsx
466
+ - app/frontend/components/dataset/ColumnList.tsx
467
+ - app/frontend/components/dataset/FeatureConfigPopover.tsx
468
+ - app/frontend/components/dataset/FeaturePicker.tsx
469
+ - app/frontend/components/dataset/PreprocessingConfig.tsx
470
+ - app/frontend/components/dataset/SplitConfigurator.tsx
471
+ - app/frontend/components/dataset/splitters/DateSplitter.tsx
472
+ - app/frontend/components/dataset/splitters/KFoldSplitter.tsx
473
+ - app/frontend/components/dataset/splitters/LeavePOutSplitter.tsx
474
+ - app/frontend/components/dataset/splitters/PredefinedSplitter.tsx
475
+ - app/frontend/components/dataset/splitters/RandomSplitter.tsx
476
+ - app/frontend/components/dataset/splitters/StratifiedSplitter.tsx
477
+ - app/frontend/components/dataset/splitters/constants.ts
478
+ - app/frontend/components/dataset/splitters/types.ts
479
+ - app/frontend/components/dataset/splitters/utils.ts
480
+ - app/frontend/components/features/CodeEditor.tsx
481
+ - app/frontend/components/features/DataPreview.tsx
482
+ - app/frontend/components/features/FeatureCard.tsx
483
+ - app/frontend/components/features/FeatureForm.tsx
484
+ - app/frontend/components/features/FeatureGroupCard.tsx
485
+ - app/frontend/components/settings/PluginSettings.tsx
486
+ - app/frontend/components/ui/badge.tsx
487
+ - app/frontend/components/ui/collapsible.tsx
488
+ - app/frontend/components/ui/scroll-area.tsx
489
+ - app/frontend/components/ui/separator.tsx
490
+ - app/frontend/entrypoints/App.tsx
491
+ - app/frontend/entrypoints/Application.tsx
492
+ - app/frontend/hooks/useAutosave.ts
493
+ - app/frontend/layouts/Layout.tsx
494
+ - app/frontend/lib/utils.ts
495
+ - app/frontend/mockData.ts
496
+ - app/frontend/pages/DatasetDetailsPage.tsx
497
+ - app/frontend/pages/DatasetsPage.tsx
498
+ - app/frontend/pages/DatasourceFormPage.tsx
499
+ - app/frontend/pages/DatasourcesPage.tsx
500
+ - app/frontend/pages/EditModelPage.tsx
501
+ - app/frontend/pages/EditTransformationPage.tsx
502
+ - app/frontend/pages/ModelsPage.tsx
503
+ - app/frontend/pages/NewDatasetPage.tsx
504
+ - app/frontend/pages/NewModelPage.tsx
505
+ - app/frontend/pages/NewTransformationPage.tsx
506
+ - app/frontend/pages/SettingsPage.tsx
507
+ - app/frontend/pages/ShowModelPage.tsx
508
+ - app/frontend/pages/TransformationsPage.tsx
509
+ - app/frontend/styles/application.css
510
+ - app/frontend/types.ts
511
+ - app/frontend/types/dataset.ts
512
+ - app/frontend/types/datasource.ts
513
+ - app/frontend/types/preprocessing.ts
514
+ - app/helpers/easy_ml/application_helper.rb
515
+ - app/jobs/easy_ml/application_job.rb
516
+ - app/jobs/easy_ml/batch_job.rb
517
+ - app/jobs/easy_ml/compute_feature_job.rb
518
+ - app/jobs/easy_ml/deploy_job.rb
519
+ - app/jobs/easy_ml/finalize_feature_job.rb
520
+ - app/jobs/easy_ml/refresh_dataset_job.rb
521
+ - app/jobs/easy_ml/schedule_retraining_job.rb
522
+ - app/jobs/easy_ml/sync_datasource_job.rb
523
+ - app/jobs/easy_ml/training_job.rb
524
+ - app/models/easy_ml/adapters/base_adapter.rb
525
+ - app/models/easy_ml/adapters/polars_adapter.rb
526
+ - app/models/easy_ml/cleaner.rb
527
+ - app/models/easy_ml/column.rb
528
+ - app/models/easy_ml/column_history.rb
529
+ - app/models/easy_ml/column_list.rb
530
+ - app/models/easy_ml/concerns/configurable.rb
531
+ - app/models/easy_ml/concerns/versionable.rb
532
+ - app/models/easy_ml/dataset.rb
533
+ - app/models/easy_ml/dataset_history.rb
534
+ - app/models/easy_ml/datasource.rb
535
+ - app/models/easy_ml/datasource_history.rb
536
+ - app/models/easy_ml/datasources/base_datasource.rb
537
+ - app/models/easy_ml/datasources/file_datasource.rb
538
+ - app/models/easy_ml/datasources/polars_datasource.rb
539
+ - app/models/easy_ml/datasources/s3_datasource.rb
540
+ - app/models/easy_ml/deploy.rb
541
+ - app/models/easy_ml/event.rb
542
+ - app/models/easy_ml/feature.rb
543
+ - app/models/easy_ml/feature_history.rb
308
544
  - app/models/easy_ml/model.rb
309
- - app/models/easy_ml/models.rb
545
+ - app/models/easy_ml/model_file.rb
546
+ - app/models/easy_ml/model_file_history.rb
547
+ - app/models/easy_ml/model_history.rb
548
+ - app/models/easy_ml/models/base_model.rb
549
+ - app/models/easy_ml/models/hyperparameters.rb
550
+ - app/models/easy_ml/models/hyperparameters/base.rb
551
+ - app/models/easy_ml/models/hyperparameters/xgboost.rb
552
+ - app/models/easy_ml/models/hyperparameters/xgboost/dart.rb
553
+ - app/models/easy_ml/models/hyperparameters/xgboost/gblinear.rb
554
+ - app/models/easy_ml/models/hyperparameters/xgboost/gbtree.rb
310
555
  - app/models/easy_ml/models/xgboost.rb
556
+ - app/models/easy_ml/models/xgboost/evals_callback.rb
557
+ - app/models/easy_ml/models/xgboost/progress_callback.rb
558
+ - app/models/easy_ml/prediction.rb
559
+ - app/models/easy_ml/retraining_job.rb
560
+ - app/models/easy_ml/retraining_run.rb
561
+ - app/models/easy_ml/settings.rb
562
+ - app/models/easy_ml/splitter.rb
563
+ - app/models/easy_ml/splitters/base_splitter.rb
564
+ - app/models/easy_ml/splitters/date_splitter.rb
565
+ - app/models/easy_ml/splitters/predefined_splitter.rb
566
+ - app/models/easy_ml/splitters/random_splitter.rb
567
+ - app/models/easy_ml/tuner_job.rb
568
+ - app/models/easy_ml/tuner_run.rb
569
+ - app/models/splitter_history.rb
570
+ - app/serializers/easy_ml/column_serializer.rb
571
+ - app/serializers/easy_ml/dataset_serializer.rb
572
+ - app/serializers/easy_ml/datasource_serializer.rb
573
+ - app/serializers/easy_ml/feature_serializer.rb
574
+ - app/serializers/easy_ml/model_serializer.rb
575
+ - app/serializers/easy_ml/retraining_job_serializer.rb
576
+ - app/serializers/easy_ml/retraining_run_serializer.rb
577
+ - app/serializers/easy_ml/settings_serializer.rb
578
+ - app/views/layouts/easy_ml/application.html.erb
579
+ - config/initializers/resque.rb
580
+ - config/resque-pool.yml
581
+ - config/routes.rb
582
+ - config/spring.rb
583
+ - config/vite.json
311
584
  - lib/easy_ml.rb
585
+ - lib/easy_ml/configuration.rb
312
586
  - lib/easy_ml/core.rb
313
- - lib/easy_ml/core/model.rb
314
- - lib/easy_ml/core/model_core.rb
587
+ - lib/easy_ml/core/evaluators/base_evaluator.rb
588
+ - lib/easy_ml/core/evaluators/classification_evaluators.rb
589
+ - lib/easy_ml/core/evaluators/regression_evaluators.rb
315
590
  - lib/easy_ml/core/model_evaluator.rb
316
- - lib/easy_ml/core/models.rb
317
- - lib/easy_ml/core/models/hyperparameters.rb
318
- - lib/easy_ml/core/models/hyperparameters/base.rb
319
- - lib/easy_ml/core/models/hyperparameters/xgboost.rb
320
- - lib/easy_ml/core/models/xgboost.rb
321
- - lib/easy_ml/core/models/xgboost_core.rb
322
591
  - lib/easy_ml/core/tuner.rb
323
592
  - lib/easy_ml/core/tuner/adapters.rb
324
593
  - lib/easy_ml/core/tuner/adapters/base_adapter.rb
325
594
  - lib/easy_ml/core/tuner/adapters/xgboost_adapter.rb
326
- - lib/easy_ml/core/uploaders.rb
327
- - lib/easy_ml/core/uploaders/model_uploader.rb
328
595
  - lib/easy_ml/core_ext.rb
596
+ - lib/easy_ml/core_ext/hash.rb
329
597
  - lib/easy_ml/core_ext/pathname.rb
330
598
  - lib/easy_ml/data.rb
331
- - lib/easy_ml/data/dataloader.rb
332
- - lib/easy_ml/data/dataset.rb
333
- - lib/easy_ml/data/dataset/data/preprocessor/statistics.json
334
- - lib/easy_ml/data/dataset/data/sample_info.json
335
- - lib/easy_ml/data/dataset/dataset/files/sample_info.json
336
- - lib/easy_ml/data/dataset/splits.rb
337
- - lib/easy_ml/data/dataset/splits/file_split.rb
338
- - lib/easy_ml/data/dataset/splits/in_memory_split.rb
339
- - lib/easy_ml/data/dataset/splits/split.rb
340
- - lib/easy_ml/data/dataset/splitters.rb
341
- - lib/easy_ml/data/dataset/splitters/date_splitter.rb
342
- - lib/easy_ml/data/datasource.rb
343
- - lib/easy_ml/data/datasource/datasource_factory.rb
344
- - lib/easy_ml/data/datasource/file_datasource.rb
345
- - lib/easy_ml/data/datasource/merged_datasource.rb
346
- - lib/easy_ml/data/datasource/polars_datasource.rb
347
- - lib/easy_ml/data/datasource/s3_datasource.rb
599
+ - lib/easy_ml/data/date_converter.rb
600
+ - lib/easy_ml/data/filter_extensions.rb
601
+ - lib/easy_ml/data/polars_column.rb
602
+ - lib/easy_ml/data/polars_reader.rb
348
603
  - lib/easy_ml/data/preprocessor.rb
349
- - lib/easy_ml/data/preprocessor/preprocessor.rb
350
- - lib/easy_ml/data/preprocessor/simple_imputer.rb
351
604
  - lib/easy_ml/data/preprocessor/utils.rb
605
+ - lib/easy_ml/data/simple_imputer.rb
606
+ - lib/easy_ml/data/splits.rb
607
+ - lib/easy_ml/data/splits/file_split.rb
608
+ - lib/easy_ml/data/splits/in_memory_split.rb
609
+ - lib/easy_ml/data/splits/split.rb
610
+ - lib/easy_ml/data/statistics_learner.rb
611
+ - lib/easy_ml/data/synced_directory.rb
352
612
  - lib/easy_ml/data/utils.rb
353
- - lib/easy_ml/deployment.rb
354
613
  - lib/easy_ml/engine.rb
614
+ - lib/easy_ml/feature_store.rb
615
+ - lib/easy_ml/features.rb
355
616
  - lib/easy_ml/initializers/inflections.rb
356
617
  - lib/easy_ml/logging.rb
618
+ - lib/easy_ml/predict.rb
357
619
  - lib/easy_ml/railtie/generators/migration/migration_generator.rb
620
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_column_histories.rb.tt
621
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_columns.rb.tt
622
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_dataset_histories.rb.tt
623
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_datasets.rb.tt
624
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_datasource_histories.rb.tt
625
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_datasources.rb.tt
626
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_deploys.rb.tt
627
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_events.rb.tt
628
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_feature_histories.rb.tt
629
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_features.rb.tt
630
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_model_file_histories.rb.tt
631
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_model_files.rb.tt
632
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_model_histories.rb.tt
358
633
  - lib/easy_ml/railtie/templates/migration/create_easy_ml_models.rb.tt
634
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_predictions.rb.tt
635
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_retraining_jobs.rb.tt
636
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_settings.rb.tt
637
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_splitter_histories.rb.tt
638
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_splitters.rb.tt
639
+ - lib/easy_ml/railtie/templates/migration/create_easy_ml_tuner_jobs.rb.tt
359
640
  - lib/easy_ml/support.rb
360
641
  - lib/easy_ml/support/age.rb
361
642
  - lib/easy_ml/support/est.rb
362
643
  - lib/easy_ml/support/file_rotate.rb
644
+ - lib/easy_ml/support/file_support.rb
363
645
  - lib/easy_ml/support/git_ignorable.rb
364
- - lib/easy_ml/support/synced_directory.rb
646
+ - lib/easy_ml/support/local_file.rb
647
+ - lib/easy_ml/support/lockable.rb
648
+ - lib/easy_ml/support/synced_file.rb
365
649
  - lib/easy_ml/support/utc.rb
366
- - lib/easy_ml/transforms.rb
367
650
  - lib/easy_ml/version.rb
368
651
  homepage: https://github.com/brettshollenberger/easy_ml
369
652
  licenses:
@@ -383,9 +666,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
383
666
  version: 3.0.0
384
667
  required_rubygems_version: !ruby/object:Gem::Requirement
385
668
  requirements:
386
- - - ">="
669
+ - - ">"
387
670
  - !ruby/object:Gem::Version
388
- version: '0'
671
+ version: 1.3.1
389
672
  requirements: []
390
673
  rubygems_version: 3.4.10
391
674
  signing_key:
@@ -1,5 +0,0 @@
1
- module EasyML
2
- module Models
3
- require_relative "models/xgboost"
4
- end
5
- end
@@ -1,30 +0,0 @@
1
- require "carrierwave"
2
- require_relative "model_core"
3
- require_relative "uploaders/model_uploader"
4
-
5
- module EasyML
6
- module Core
7
- class Model
8
- include GlueGun::DSL
9
-
10
- attribute :name, :string
11
- attribute :version, :string
12
- attribute :verbose, :boolean, default: false
13
- attribute :task, :string, default: "regression"
14
- attribute :metrics, :array
15
- attribute :ml_model, :string
16
- attribute :file, :string
17
- attribute :root_dir, :string
18
- attribute :objective
19
- attribute :evaluator
20
- attribute :evaluator_metric
21
-
22
- include EasyML::Core::ModelCore
23
-
24
- def initialize(options = {})
25
- super
26
- apply_defaults
27
- end
28
- end
29
- end
30
- end