1
1
import 'package:ml_dataframe/ml_dataframe.dart' ;
2
+ import 'package:ml_preprocessing/ml_preprocessing.dart' ;
2
3
import 'package:ml_preprocessing/src/encoder/encoder.dart' ;
3
4
import 'package:test/test.dart' ;
4
5
@@ -15,6 +16,13 @@ void main() {
15
16
[ 55 , 'F' , 'category_val_3' , 10 ],
16
17
];
17
18
19
+ final unseenData = [
20
+ ['first' , 'second' , 'third' , 'fourth' ],
21
+ [ 1 , 'F' , 'category_val_5' , 10 ],
22
+ [ 10 , 'F' , 'category_val_2' , 20 ],
23
+ [ 11 , 'M' , 'category_val_6' , 10 ],
24
+ ];
25
+
18
26
group ('Encoder.oneHot' , () {
19
27
test ('should encode multiple columns' , () {
20
28
final dataFrame = DataFrame (data);
@@ -53,6 +61,42 @@ void main() {
53
61
[ 55 , 1 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , ],
54
62
]));
55
63
});
64
+
65
+ test ('should throw error if unknown value handling type is error' , () {
66
+ final trainingDataFrame = DataFrame (data);
67
+ final unseenDataDataframe = DataFrame (unseenData);
68
+ final encoder = Encoder .oneHot (
69
+ trainingDataFrame,
70
+ featureNames: ['second' , 'third' , 'fourth' ],
71
+ unknownValueHandlingType: UnknownValueHandlingType .error,
72
+ );
73
+ final actual = () => encoder
74
+ .process (unseenDataDataframe)
75
+ .toMatrix ();
76
+ final expected = throwsException;
77
+
78
+ expect (actual, expected);
79
+ });
80
+
81
+ test ('should ignore unknown value if unknown value handling type is ignpre' , () {
82
+ final trainingDataFrame = DataFrame (data);
83
+ final unseenDataDataframe = DataFrame (unseenData);
84
+ final encoder = Encoder .oneHot (
85
+ trainingDataFrame,
86
+ featureNames: ['second' , 'third' , 'fourth' ],
87
+ unknownValueHandlingType: UnknownValueHandlingType .ignore,
88
+ );
89
+ final actual = encoder
90
+ .process (unseenDataDataframe)
91
+ .toMatrix ();
92
+ final expected = [
93
+ [ 1 , 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , ],
94
+ [ 10 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , ],
95
+ [ 11 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , ],
96
+ ];
97
+
98
+ expect (actual, expected);
99
+ });
56
100
});
57
101
58
102
group ('Encoder.label' , () {
@@ -92,6 +136,42 @@ void main() {
92
136
[ 55 , 0 , 2 , 0 , ],
93
137
]));
94
138
});
139
+
140
+ test ('should throw error if unknown value handling type is error' , () {
141
+ final trainingDataFrame = DataFrame (data);
142
+ final unseenDataDataframe = DataFrame (unseenData);
143
+ final encoder = Encoder .label (
144
+ trainingDataFrame,
145
+ featureNames: ['second' , 'third' , 'fourth' ],
146
+ unknownValueHandlingType: UnknownValueHandlingType .error,
147
+ );
148
+ final actual = () => encoder
149
+ .process (unseenDataDataframe)
150
+ .toMatrix ();
151
+ final expected = throwsException;
152
+
153
+ expect (actual, expected);
154
+ });
155
+
156
+ test ('should ignore unknown value if unknown value handling type is ignpre' , () {
157
+ final trainingDataFrame = DataFrame (data);
158
+ final unseenDataDataframe = DataFrame (unseenData);
159
+ final encoder = Encoder .label (
160
+ trainingDataFrame,
161
+ featureNames: ['second' , 'third' , 'fourth' ],
162
+ unknownValueHandlingType: UnknownValueHandlingType .ignore,
163
+ );
164
+ final actual = encoder
165
+ .process (unseenDataDataframe)
166
+ .toMatrix ();
167
+ final expected = [
168
+ [ 1 , 0 , 3 , 0 , ],
169
+ [ 10 , 0 , 1 , 1 , ],
170
+ [ 11 , 1 , 3 , 0 , ],
171
+ ];
172
+
173
+ expect (actual, expected);
174
+ });
95
175
});
96
176
});
97
177
}
0 commit comments