easy_ml 0.1.4 → 0.2.0.pre.rc1

Sign up to get free protection for your applications and to get access to all the features.
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