15
15
//! | Petal width | Numerical | No |
16
16
//! | Class | Nominal | Yes |
17
17
//!
18
+ use crate :: dataset:: deserialize_data;
18
19
use crate :: dataset:: Dataset ;
19
20
20
21
/// Get dataset
21
22
pub fn load_dataset ( ) -> Dataset < f32 , f32 > {
22
- let x = vec ! [
23
- 5.1 , 3.5 , 1.4 , 0.2 , 4.9 , 3.0 , 1.4 , 0.2 , 4.7 , 3.2 , 1.3 , 0.2 , 4.6 , 3.1 , 1.5 , 0.2 , 5.0 , 3.6 ,
24
- 1.4 , 0.2 , 5.4 , 3.9 , 1.7 , 0.4 , 4.6 , 3.4 , 1.4 , 0.3 , 5.0 , 3.4 , 1.5 , 0.2 , 4.4 , 2.9 , 1.4 , 0.2 ,
25
- 4.9 , 3.1 , 1.5 , 0.1 , 5.4 , 3.7 , 1.5 , 0.2 , 4.8 , 3.4 , 1.6 , 0.2 , 4.8 , 3.0 , 1.4 , 0.1 , 4.3 , 3.0 ,
26
- 1.1 , 0.1 , 5.8 , 4.0 , 1.2 , 0.2 , 5.7 , 4.4 , 1.5 , 0.4 , 5.4 , 3.9 , 1.3 , 0.4 , 5.1 , 3.5 , 1.4 , 0.3 ,
27
- 5.7 , 3.8 , 1.7 , 0.3 , 5.1 , 3.8 , 1.5 , 0.3 , 5.4 , 3.4 , 1.7 , 0.2 , 5.1 , 3.7 , 1.5 , 0.4 , 4.6 , 3.6 ,
28
- 1.0 , 0.2 , 5.1 , 3.3 , 1.7 , 0.5 , 4.8 , 3.4 , 1.9 , 0.2 , 5.0 , 3.0 , 1.6 , 0.2 , 5.0 , 3.4 , 1.6 , 0.4 ,
29
- 5.2 , 3.5 , 1.5 , 0.2 , 5.2 , 3.4 , 1.4 , 0.2 , 4.7 , 3.2 , 1.6 , 0.2 , 4.8 , 3.1 , 1.6 , 0.2 , 5.4 , 3.4 ,
30
- 1.5 , 0.4 , 5.2 , 4.1 , 1.5 , 0.1 , 5.5 , 4.2 , 1.4 , 0.2 , 4.9 , 3.1 , 1.5 , 0.1 , 5.0 , 3.2 , 1.2 , 0.2 ,
31
- 5.5 , 3.5 , 1.3 , 0.2 , 4.9 , 3.1 , 1.5 , 0.1 , 4.4 , 3.0 , 1.3 , 0.2 , 5.1 , 3.4 , 1.5 , 0.2 , 5.0 , 3.5 ,
32
- 1.3 , 0.3 , 4.5 , 2.3 , 1.3 , 0.3 , 4.4 , 3.2 , 1.3 , 0.2 , 5.0 , 3.5 , 1.6 , 0.6 , 5.1 , 3.8 , 1.9 , 0.4 ,
33
- 4.8 , 3.0 , 1.4 , 0.3 , 5.1 , 3.8 , 1.6 , 0.2 , 4.6 , 3.2 , 1.4 , 0.2 , 5.3 , 3.7 , 1.5 , 0.2 , 5.0 , 3.3 ,
34
- 1.4 , 0.2 , 7.0 , 3.2 , 4.7 , 1.4 , 6.4 , 3.2 , 4.5 , 1.5 , 6.9 , 3.1 , 4.9 , 1.5 , 5.5 , 2.3 , 4.0 , 1.3 ,
35
- 6.5 , 2.8 , 4.6 , 1.5 , 5.7 , 2.8 , 4.5 , 1.3 , 6.3 , 3.3 , 4.7 , 1.6 , 4.9 , 2.4 , 3.3 , 1.0 , 6.6 , 2.9 ,
36
- 4.6 , 1.3 , 5.2 , 2.7 , 3.9 , 1.4 , 5.0 , 2.0 , 3.5 , 1.0 , 5.9 , 3.0 , 4.2 , 1.5 , 6.0 , 2.2 , 4.0 , 1.0 ,
37
- 6.1 , 2.9 , 4.7 , 1.4 , 5.6 , 2.9 , 3.6 , 1.3 , 6.7 , 3.1 , 4.4 , 1.4 , 5.6 , 3.0 , 4.5 , 1.5 , 5.8 , 2.7 ,
38
- 4.1 , 1.0 , 6.2 , 2.2 , 4.5 , 1.5 , 5.6 , 2.5 , 3.9 , 1.1 , 5.9 , 3.2 , 4.8 , 1.8 , 6.1 , 2.8 , 4.0 , 1.3 ,
39
- 6.3 , 2.5 , 4.9 , 1.5 , 6.1 , 2.8 , 4.7 , 1.2 , 6.4 , 2.9 , 4.3 , 1.3 , 6.6 , 3.0 , 4.4 , 1.4 , 6.8 , 2.8 ,
40
- 4.8 , 1.4 , 6.7 , 3.0 , 5.0 , 1.7 , 6.0 , 2.9 , 4.5 , 1.5 , 5.7 , 2.6 , 3.5 , 1.0 , 5.5 , 2.4 , 3.8 , 1.1 ,
41
- 5.5 , 2.4 , 3.7 , 1.0 , 5.8 , 2.7 , 3.9 , 1.2 , 6.0 , 2.7 , 5.1 , 1.6 , 5.4 , 3.0 , 4.5 , 1.5 , 6.0 , 3.4 ,
42
- 4.5 , 1.6 , 6.7 , 3.1 , 4.7 , 1.5 , 6.3 , 2.3 , 4.4 , 1.3 , 5.6 , 3.0 , 4.1 , 1.3 , 5.5 , 2.5 , 4.0 , 1.3 ,
43
- 5.5 , 2.6 , 4.4 , 1.2 , 6.1 , 3.0 , 4.6 , 1.4 , 5.8 , 2.6 , 4.0 , 1.2 , 5.0 , 2.3 , 3.3 , 1.0 , 5.6 , 2.7 ,
44
- 4.2 , 1.3 , 5.7 , 3.0 , 4.2 , 1.2 , 5.7 , 2.9 , 4.2 , 1.3 , 6.2 , 2.9 , 4.3 , 1.3 , 5.1 , 2.5 , 3.0 , 1.1 ,
45
- 5.7 , 2.8 , 4.1 , 1.3 , 6.3 , 3.3 , 6.0 , 2.5 , 5.8 , 2.7 , 5.1 , 1.9 , 7.1 , 3.0 , 5.9 , 2.1 , 6.3 , 2.9 ,
46
- 5.6 , 1.8 , 6.5 , 3.0 , 5.8 , 2.2 , 7.6 , 3.0 , 6.6 , 2.1 , 4.9 , 2.5 , 4.5 , 1.7 , 7.3 , 2.9 , 6.3 , 1.8 ,
47
- 6.7 , 2.5 , 5.8 , 1.8 , 7.2 , 3.6 , 6.1 , 2.5 , 6.5 , 3.2 , 5.1 , 2.0 , 6.4 , 2.7 , 5.3 , 1.9 , 6.8 , 3.0 ,
48
- 5.5 , 2.1 , 5.7 , 2.5 , 5.0 , 2.0 , 5.8 , 2.8 , 5.1 , 2.4 , 6.4 , 3.2 , 5.3 , 2.3 , 6.5 , 3.0 , 5.5 , 1.8 ,
49
- 7.7 , 3.8 , 6.7 , 2.2 , 7.7 , 2.6 , 6.9 , 2.3 , 6.0 , 2.2 , 5.0 , 1.5 , 6.9 , 3.2 , 5.7 , 2.3 , 5.6 , 2.8 ,
50
- 4.9 , 2.0 , 7.7 , 2.8 , 6.7 , 2.0 , 6.3 , 2.7 , 4.9 , 1.8 , 6.7 , 3.3 , 5.7 , 2.1 , 7.2 , 3.2 , 6.0 , 1.8 ,
51
- 6.2 , 2.8 , 4.8 , 1.8 , 6.1 , 3.0 , 4.9 , 1.8 , 6.4 , 2.8 , 5.6 , 2.1 , 7.2 , 3.0 , 5.8 , 1.6 , 7.4 , 2.8 ,
52
- 6.1 , 1.9 , 7.9 , 3.8 , 6.4 , 2.0 , 6.4 , 2.8 , 5.6 , 2.2 , 6.3 , 2.8 , 5.1 , 1.5 , 6.1 , 2.6 , 5.6 , 1.4 ,
53
- 7.7 , 3.0 , 6.1 , 2.3 , 6.3 , 3.4 , 5.6 , 2.4 , 6.4 , 3.1 , 5.5 , 1.8 , 6.0 , 3.0 , 4.8 , 1.8 , 6.9 , 3.1 ,
54
- 5.4 , 2.1 , 6.7 , 3.1 , 5.6 , 2.4 , 6.9 , 3.1 , 5.1 , 2.3 , 5.8 , 2.7 , 5.1 , 1.9 , 6.8 , 3.2 , 5.9 , 2.3 ,
55
- 6.7 , 3.3 , 5.7 , 2.5 , 6.7 , 3.0 , 5.2 , 2.3 , 6.3 , 2.5 , 5.0 , 1.9 , 6.5 , 3.0 , 5.2 , 2.0 , 6.2 , 3.4 ,
56
- 5.4 , 2.3 , 5.9 , 3.0 , 5.1 , 1.8 ,
57
- ] ;
58
-
59
- let setosa = std:: iter:: repeat ( 0f32 ) . take ( 50 ) ;
60
- let versicolor = std:: iter:: repeat ( 1f32 ) . take ( 50 ) ;
61
- let virginica = std:: iter:: repeat ( 2f32 ) . take ( 50 ) ;
62
- let y = setosa
63
- . chain ( versicolor)
64
- . chain ( virginica)
65
- . collect :: < Vec < f32 > > ( ) ;
66
- let shape = ( 150 , 4 ) ;
23
+ let ( x, y, num_samples, num_features) = match deserialize_data ( std:: include_bytes!( "iris.xy" ) ) {
24
+ Err ( why) => panic ! ( "Can't deserialize iris.xy. {}" , why) ,
25
+ Ok ( ( x, y, num_samples, num_features) ) => ( x, y, num_samples, num_features) ,
26
+ } ;
67
27
68
28
Dataset {
69
29
data : x,
70
30
target : y,
71
- num_samples : shape . 0 ,
72
- num_features : shape . 1 ,
31
+ num_samples : num_samples ,
32
+ num_features : num_features ,
73
33
feature_names : vec ! [
74
34
"sepal length (cm)" ,
75
35
"sepal width (cm)" ,
@@ -90,8 +50,17 @@ pub fn load_dataset() -> Dataset<f32, f32> {
90
50
#[ cfg( test) ]
91
51
mod tests {
92
52
53
+ use super :: super :: * ;
93
54
use super :: * ;
94
55
56
+ #[ test]
57
+ #[ ignore]
58
+ fn refresh_iris_dataset ( ) {
59
+ // run this test to generate iris.xy file.
60
+ let dataset = load_dataset ( ) ;
61
+ assert ! ( serialize_data( & dataset, "iris.xy" ) . is_ok( ) ) ;
62
+ }
63
+
95
64
#[ test]
96
65
fn iris_dataset ( ) {
97
66
let dataset = load_dataset ( ) ;
0 commit comments