Skip to content

Commit d90cff0

Browse files
authored
ml_linalg entities json converters added (#167)
1 parent e2570e7 commit d90cff0

20 files changed

+145
-102
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## 15.4.1
4+
- `DTypeJsonConverter` added
5+
- `MatrixJsonConverter` added
6+
- `VectorJsonConverter` added
7+
- `DistanceTypeJsonConverter` added
8+
39
## 15.4.0
410
- `KnnClassifier`:
511
- serialization/deserialization functionality added with possibility to save the model into a json file

lib/src/classifier/decision_tree_classifier/decision_tree_classifier_impl.dart

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@ import 'package:json_annotation/json_annotation.dart';
22
import 'package:ml_algo/src/classifier/_mixins/assessable_classifier_mixin.dart';
33
import 'package:ml_algo/src/classifier/decision_tree_classifier/decision_tree_classifier.dart';
44
import 'package:ml_algo/src/classifier/decision_tree_classifier/decision_tree_json_keys.dart';
5+
import 'package:ml_algo/src/common/json_converter/dtype_json_converter.dart';
56
import 'package:ml_algo/src/common/serializable/serializable_mixin.dart';
67
import 'package:ml_algo/src/tree_trainer/leaf_label/leaf_label.dart';
78
import 'package:ml_algo/src/tree_trainer/tree_node/_helper/from_tree_node_json.dart';
89
import 'package:ml_algo/src/tree_trainer/tree_node/_helper/tree_node_to_json.dart';
910
import 'package:ml_algo/src/tree_trainer/tree_node/tree_node.dart';
1011
import 'package:ml_dataframe/ml_dataframe.dart';
1112
import 'package:ml_linalg/dtype.dart';
12-
import 'package:ml_linalg/dtype_to_json.dart';
13-
import 'package:ml_linalg/from_dtype_json.dart';
1413
import 'package:ml_linalg/matrix.dart';
1514
import 'package:ml_linalg/vector.dart';
1615

1716
part 'decision_tree_classifier_impl.g.dart';
1817

1918
@JsonSerializable()
19+
@DTypeJsonConverter()
2020
class DecisionTreeClassifierImpl
2121
with
2222
AssessableClassifierMixin,
@@ -37,11 +37,7 @@ class DecisionTreeClassifierImpl
3737
Map<String, dynamic> toJson() => _$DecisionTreeClassifierImplToJson(this);
3838

3939
@override
40-
@JsonKey(
41-
name: dTypeJsonKey,
42-
toJson: dTypeToJson,
43-
fromJson: fromDTypeJson,
44-
)
40+
@JsonKey(name: dTypeJsonKey)
4541
final DType dtype;
4642

4743
@JsonKey(name: targetColumnNameJsonKey)

lib/src/classifier/decision_tree_classifier/decision_tree_classifier_impl.g.dart

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/src/classifier/knn_classifier/knn_classifier_impl.dart

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:json_annotation/json_annotation.dart';
22
import 'package:ml_algo/src/classifier/_mixins/assessable_classifier_mixin.dart';
33
import 'package:ml_algo/src/classifier/knn_classifier/knn_classifier.dart';
44
import 'package:ml_algo/src/classifier/knn_classifier/knn_classifier_json_keys.dart';
5+
import 'package:ml_algo/src/common/json_converter/dtype_json_converter.dart';
56
import 'package:ml_algo/src/common/serializable/serializable_mixin.dart';
67
import 'package:ml_algo/src/helpers/validate_class_label_list.dart';
78
import 'package:ml_algo/src/helpers/validate_test_features.dart';
@@ -12,8 +13,6 @@ import 'package:ml_algo/src/knn_solver/knn_solver_json_converter.dart';
1213
import 'package:ml_algo/src/knn_solver/neigbour.dart';
1314
import 'package:ml_dataframe/ml_dataframe.dart';
1415
import 'package:ml_linalg/dtype.dart';
15-
import 'package:ml_linalg/dtype_to_json.dart';
16-
import 'package:ml_linalg/from_dtype_json.dart';
1716
import 'package:ml_linalg/matrix.dart';
1817
import 'package:ml_linalg/vector.dart';
1918

@@ -22,6 +21,7 @@ part 'knn_classifier_impl.g.dart';
2221
@JsonSerializable()
2322
@KnnSolverJsonConverter()
2423
@KernelJsonConverter()
24+
@DTypeJsonConverter()
2525
class KnnClassifierImpl
2626
with
2727
AssessableClassifierMixin,
@@ -49,11 +49,7 @@ class KnnClassifierImpl
4949
final String targetColumnName;
5050

5151
@override
52-
@JsonKey(
53-
name: knnClassifierDTypeJsonKey,
54-
toJson: dTypeToJson,
55-
fromJson: fromDTypeJson,
56-
)
52+
@JsonKey(name: knnClassifierDTypeJsonKey)
5753
final DType dtype;
5854

5955
@override

lib/src/classifier/knn_classifier/knn_classifier_impl.g.dart

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/src/classifier/logistic_regressor/logistic_regressor_impl.dart

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import 'package:ml_algo/src/classifier/_mixins/assessable_classifier_mixin.dart'
33
import 'package:ml_algo/src/classifier/_mixins/linear_classifier_mixin.dart';
44
import 'package:ml_algo/src/classifier/logistic_regressor/logistic_regressor.dart';
55
import 'package:ml_algo/src/classifier/logistic_regressor/logistic_regressor_json_keys.dart';
6+
import 'package:ml_algo/src/common/json_converter/dtype_json_converter.dart';
7+
import 'package:ml_algo/src/common/json_converter/matrix_json_converter.dart';
68
import 'package:ml_algo/src/common/serializable/serializable_mixin.dart';
79
import 'package:ml_algo/src/helpers/validate_class_labels.dart';
810
import 'package:ml_algo/src/helpers/validate_coefficients_matrix.dart';
@@ -12,15 +14,13 @@ import 'package:ml_algo/src/link_function/helpers/link_function_to_json.dart';
1214
import 'package:ml_algo/src/link_function/link_function.dart';
1315
import 'package:ml_dataframe/ml_dataframe.dart';
1416
import 'package:ml_linalg/dtype.dart';
15-
import 'package:ml_linalg/dtype_to_json.dart';
16-
import 'package:ml_linalg/from_dtype_json.dart';
17-
import 'package:ml_linalg/from_matrix_json.dart';
1817
import 'package:ml_linalg/matrix.dart';
19-
import 'package:ml_linalg/matrix_to_json.dart';
2018

2119
part 'logistic_regressor_impl.g.dart';
2220

2321
@JsonSerializable()
22+
@DTypeJsonConverter()
23+
@MatrixJsonConverter()
2424
class LogisticRegressorImpl
2525
with
2626
LinearClassifierMixin,
@@ -64,11 +64,7 @@ class LogisticRegressorImpl
6464
/// N x 1 matrix, where N - number of features. It has only one column since
6565
/// in case of Logistic Regression only one class is used
6666
@override
67-
@JsonKey(
68-
name: logisticRegressorCoefficientsByClassesJsonKey,
69-
toJson: matrixToJson,
70-
fromJson: fromMatrixJson,
71-
)
67+
@JsonKey(name: logisticRegressorCoefficientsByClassesJsonKey)
7268
final Matrix coefficientsByClasses;
7369

7470
@override
@@ -84,11 +80,7 @@ class LogisticRegressorImpl
8480
final num interceptScale;
8581

8682
@override
87-
@JsonKey(
88-
name: logisticRegressorDTypeJsonKey,
89-
toJson: dTypeToJson,
90-
fromJson: fromDTypeJson,
91-
)
83+
@JsonKey(name: logisticRegressorDTypeJsonKey)
9284
final DType dtype;
9385

9486
@JsonKey(name: logisticRegressorProbabilityThresholdJsonKey)

lib/src/classifier/logistic_regressor/logistic_regressor_impl.g.dart

Lines changed: 8 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/src/classifier/softmax_regressor/softmax_regressor_impl.dart

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import 'package:ml_algo/src/classifier/_mixins/assessable_classifier_mixin.dart'
33
import 'package:ml_algo/src/classifier/_mixins/linear_classifier_mixin.dart';
44
import 'package:ml_algo/src/classifier/softmax_regressor/softmax_regressor.dart';
55
import 'package:ml_algo/src/classifier/softmax_regressor/softmax_regressor_json_keys.dart';
6+
import 'package:ml_algo/src/common/json_converter/dtype_json_converter.dart';
7+
import 'package:ml_algo/src/common/json_converter/matrix_json_converter.dart';
68
import 'package:ml_algo/src/common/serializable/serializable_mixin.dart';
79
import 'package:ml_algo/src/helpers/validate_class_labels.dart';
810
import 'package:ml_algo/src/helpers/validate_coefficients_matrix.dart';
@@ -11,12 +13,14 @@ import 'package:ml_algo/src/link_function/helpers/link_function_to_json.dart';
1113
import 'package:ml_algo/src/link_function/link_function.dart';
1214
import 'package:ml_dataframe/ml_dataframe.dart';
1315
import 'package:ml_linalg/dtype.dart';
14-
import 'package:ml_linalg/linalg.dart';
1516
import 'package:ml_linalg/matrix.dart';
17+
import 'package:ml_linalg/vector.dart';
1618

1719
part 'softmax_regressor_impl.g.dart';
1820

1921
@JsonSerializable()
22+
@DTypeJsonConverter()
23+
@MatrixJsonConverter()
2024
class SoftmaxRegressorImpl
2125
with
2226
LinearClassifierMixin,
@@ -67,19 +71,11 @@ class SoftmaxRegressorImpl
6771
final num interceptScale;
6872

6973
@override
70-
@JsonKey(
71-
name: softmaxRegressorCoefficientsByClassesJsonKey,
72-
toJson: matrixToJson,
73-
fromJson: fromMatrixJson,
74-
)
74+
@JsonKey(name: softmaxRegressorCoefficientsByClassesJsonKey)
7575
final Matrix coefficientsByClasses;
7676

7777
@override
78-
@JsonKey(
79-
name: softmaxRegressorDTypeJsonKey,
80-
toJson: dTypeToJson,
81-
fromJson: fromDTypeJson,
82-
)
78+
@JsonKey(name: softmaxRegressorDTypeJsonKey)
8379
final DType dtype;
8480

8581
@override

lib/src/classifier/softmax_regressor/softmax_regressor_impl.g.dart

Lines changed: 8 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import 'package:json_annotation/json_annotation.dart';
2+
import 'package:ml_linalg/distance.dart';
3+
import 'package:ml_linalg/distance_type_to_json.dart';
4+
import 'package:ml_linalg/from_distance_type_json.dart';
5+
6+
class DistanceTypeJsonConverter implements JsonConverter<Distance, String> {
7+
const DistanceTypeJsonConverter();
8+
9+
@override
10+
Distance fromJson(String json) => fromDistanceTypeJson(json);
11+
12+
@override
13+
String toJson(Distance distance) => distanceTypeToJson(distance);
14+
}

0 commit comments

Comments
 (0)