1
0
mirror of https://github.com/sjwhitworth/golearn.git synced 2025-04-25 13:48:49 +08:00

Merge pull request #98 from Sentimentron/dense-staging

New DenseInstances conversion function
This commit is contained in:
Stephen Whitworth 2014-11-21 13:53:52 +00:00
commit 353cd38e7c
3 changed files with 194 additions and 0 deletions

View File

@ -44,6 +44,40 @@ func NewDenseInstances() *DenseInstances {
}
}
// NewDenseCopy generates a new DenseInstances set
// from an existing FixedDataGrid.
func NewDenseCopy(of FixedDataGrid) *DenseInstances {
ret := NewDenseInstances() // Create the skeleton
// Attribute creation
attrs := of.AllAttributes()
specs1 := make([]AttributeSpec, len(attrs))
specs2 := make([]AttributeSpec, len(attrs))
for i, a := range attrs {
// Retrieve old AttributeSpec
s, err := of.GetAttribute(a)
if err != nil {
panic(err)
}
specs1[i] = s
// Add and store new AttributeSpec
specs2[i] = ret.AddAttribute(a)
}
// Allocate memory
_, rows := of.Size()
ret.Extend(rows)
// Copy each row from the old one to the new
of.MapOverRows(specs1, func(v [][]byte, r int) (bool, error) {
for i, c := range v {
ret.Set(specs2[i], r, c)
}
return true, nil
})
return ret
}
//
// AttributeGroup functions
//

View File

@ -114,6 +114,15 @@ func TestInstancesViewAttrs(t *testing.T) {
So(ok3, ShouldEqual, true)
So(ok4, ShouldEqual, true)
})
Convey("The InstancesView should match one prepared earlier...", func() {
instRef, err := ParseCSVToInstances("../examples/datasets/iris_headers_subset.csv", true)
So(err, ShouldBeNil)
So(InstancesAreEqual(instRef, instView), ShouldBeTrue)
Convey("And a DenseInstances conversion should too...", func() {
instView2 := NewDenseCopy(instRef)
So(InstancesAreEqual(instRef, instView2), ShouldBeTrue)
})
})
})
})
}

View File

@ -0,0 +1,151 @@
Sepal width,Petal length, Petal width, Species
3.5,1.4,0.2,Iris-setosa
3,1.4,0.2,Iris-setosa
3.2,1.3,0.2,Iris-setosa
3.1,1.5,0.2,Iris-setosa
3.6,1.4,0.2,Iris-setosa
3.9,1.7,0.4,Iris-setosa
3.4,1.4,0.3,Iris-setosa
3.4,1.5,0.2,Iris-setosa
2.9,1.4,0.2,Iris-setosa
3.1,1.5,0.1,Iris-setosa
3.7,1.5,0.2,Iris-setosa
3.4,1.6,0.2,Iris-setosa
3,1.4,0.1,Iris-setosa
3,1.1,0.1,Iris-setosa
4,1.2,0.2,Iris-setosa
4.4,1.5,0.4,Iris-setosa
3.9,1.3,0.4,Iris-setosa
3.5,1.4,0.3,Iris-setosa
3.8,1.7,0.3,Iris-setosa
3.8,1.5,0.3,Iris-setosa
3.4,1.7,0.2,Iris-setosa
3.7,1.5,0.4,Iris-setosa
3.6,1,0.2,Iris-setosa
3.3,1.7,0.5,Iris-setosa
3.4,1.9,0.2,Iris-setosa
3,1.6,0.2,Iris-setosa
3.4,1.6,0.4,Iris-setosa
3.5,1.5,0.2,Iris-setosa
3.4,1.4,0.2,Iris-setosa
3.2,1.6,0.2,Iris-setosa
3.1,1.6,0.2,Iris-setosa
3.4,1.5,0.4,Iris-setosa
4.1,1.5,0.1,Iris-setosa
4.2,1.4,0.2,Iris-setosa
3.1,1.5,0.1,Iris-setosa
3.2,1.2,0.2,Iris-setosa
3.5,1.3,0.2,Iris-setosa
3.1,1.5,0.1,Iris-setosa
3,1.3,0.2,Iris-setosa
3.4,1.5,0.2,Iris-setosa
3.5,1.3,0.3,Iris-setosa
2.3,1.3,0.3,Iris-setosa
3.2,1.3,0.2,Iris-setosa
3.5,1.6,0.6,Iris-setosa
3.8,1.9,0.4,Iris-setosa
3,1.4,0.3,Iris-setosa
3.8,1.6,0.2,Iris-setosa
3.2,1.4,0.2,Iris-setosa
3.7,1.5,0.2,Iris-setosa
3.3,1.4,0.2,Iris-setosa
3.2,4.7,1.4,Iris-versicolor
3.2,4.5,1.5,Iris-versicolor
3.1,4.9,1.5,Iris-versicolor
2.3,4,1.3,Iris-versicolor
2.8,4.6,1.5,Iris-versicolor
2.8,4.5,1.3,Iris-versicolor
3.3,4.7,1.6,Iris-versicolor
2.4,3.3,1,Iris-versicolor
2.9,4.6,1.3,Iris-versicolor
2.7,3.9,1.4,Iris-versicolor
2,3.5,1,Iris-versicolor
3,4.2,1.5,Iris-versicolor
2.2,4,1,Iris-versicolor
2.9,4.7,1.4,Iris-versicolor
2.9,3.6,1.3,Iris-versicolor
3.1,4.4,1.4,Iris-versicolor
3,4.5,1.5,Iris-versicolor
2.7,4.1,1,Iris-versicolor
2.2,4.5,1.5,Iris-versicolor
2.5,3.9,1.1,Iris-versicolor
3.2,4.8,1.8,Iris-versicolor
2.8,4,1.3,Iris-versicolor
2.5,4.9,1.5,Iris-versicolor
2.8,4.7,1.2,Iris-versicolor
2.9,4.3,1.3,Iris-versicolor
3,4.4,1.4,Iris-versicolor
2.8,4.8,1.4,Iris-versicolor
3,5,1.7,Iris-versicolor
2.9,4.5,1.5,Iris-versicolor
2.6,3.5,1,Iris-versicolor
2.4,3.8,1.1,Iris-versicolor
2.4,3.7,1,Iris-versicolor
2.7,3.9,1.2,Iris-versicolor
2.7,5.1,1.6,Iris-versicolor
3,4.5,1.5,Iris-versicolor
3.4,4.5,1.6,Iris-versicolor
3.1,4.7,1.5,Iris-versicolor
2.3,4.4,1.3,Iris-versicolor
3,4.1,1.3,Iris-versicolor
2.5,4,1.3,Iris-versicolor
2.6,4.4,1.2,Iris-versicolor
3,4.6,1.4,Iris-versicolor
2.6,4,1.2,Iris-versicolor
2.3,3.3,1,Iris-versicolor
2.7,4.2,1.3,Iris-versicolor
3,4.2,1.2,Iris-versicolor
2.9,4.2,1.3,Iris-versicolor
2.9,4.3,1.3,Iris-versicolor
2.5,3,1.1,Iris-versicolor
2.8,4.1,1.3,Iris-versicolor
3.3,6,2.5,Iris-virginica
2.7,5.1,1.9,Iris-virginica
3,5.9,2.1,Iris-virginica
2.9,5.6,1.8,Iris-virginica
3,5.8,2.2,Iris-virginica
3,6.6,2.1,Iris-virginica
2.5,4.5,1.7,Iris-virginica
2.9,6.3,1.8,Iris-virginica
2.5,5.8,1.8,Iris-virginica
3.6,6.1,2.5,Iris-virginica
3.2,5.1,2,Iris-virginica
2.7,5.3,1.9,Iris-virginica
3,5.5,2.1,Iris-virginica
2.5,5,2,Iris-virginica
2.8,5.1,2.4,Iris-virginica
3.2,5.3,2.3,Iris-virginica
3,5.5,1.8,Iris-virginica
3.8,6.7,2.2,Iris-virginica
2.6,6.9,2.3,Iris-virginica
2.2,5,1.5,Iris-virginica
3.2,5.7,2.3,Iris-virginica
2.8,4.9,2,Iris-virginica
2.8,6.7,2,Iris-virginica
2.7,4.9,1.8,Iris-virginica
3.3,5.7,2.1,Iris-virginica
3.2,6,1.8,Iris-virginica
2.8,4.8,1.8,Iris-virginica
3,4.9,1.8,Iris-virginica
2.8,5.6,2.1,Iris-virginica
3,5.8,1.6,Iris-virginica
2.8,6.1,1.9,Iris-virginica
3.8,6.4,2,Iris-virginica
2.8,5.6,2.2,Iris-virginica
2.8,5.1,1.5,Iris-virginica
2.6,5.6,1.4,Iris-virginica
3,6.1,2.3,Iris-virginica
3.4,5.6,2.4,Iris-virginica
3.1,5.5,1.8,Iris-virginica
3,4.8,1.8,Iris-virginica
3.1,5.4,2.1,Iris-virginica
3.1,5.6,2.4,Iris-virginica
3.1,5.1,2.3,Iris-virginica
2.7,5.1,1.9,Iris-virginica
3.2,5.9,2.3,Iris-virginica
3.3,5.7,2.5,Iris-virginica
3,5.2,2.3,Iris-virginica
2.5,5,1.9,Iris-virginica
3,5.2,2,Iris-virginica
3.4,5.4,2.3,Iris-virginica
3,5.1,1.8,Iris-virginica
1 Sepal width Petal length Petal width Species
2 3.5 1.4 0.2 Iris-setosa
3 3 1.4 0.2 Iris-setosa
4 3.2 1.3 0.2 Iris-setosa
5 3.1 1.5 0.2 Iris-setosa
6 3.6 1.4 0.2 Iris-setosa
7 3.9 1.7 0.4 Iris-setosa
8 3.4 1.4 0.3 Iris-setosa
9 3.4 1.5 0.2 Iris-setosa
10 2.9 1.4 0.2 Iris-setosa
11 3.1 1.5 0.1 Iris-setosa
12 3.7 1.5 0.2 Iris-setosa
13 3.4 1.6 0.2 Iris-setosa
14 3 1.4 0.1 Iris-setosa
15 3 1.1 0.1 Iris-setosa
16 4 1.2 0.2 Iris-setosa
17 4.4 1.5 0.4 Iris-setosa
18 3.9 1.3 0.4 Iris-setosa
19 3.5 1.4 0.3 Iris-setosa
20 3.8 1.7 0.3 Iris-setosa
21 3.8 1.5 0.3 Iris-setosa
22 3.4 1.7 0.2 Iris-setosa
23 3.7 1.5 0.4 Iris-setosa
24 3.6 1 0.2 Iris-setosa
25 3.3 1.7 0.5 Iris-setosa
26 3.4 1.9 0.2 Iris-setosa
27 3 1.6 0.2 Iris-setosa
28 3.4 1.6 0.4 Iris-setosa
29 3.5 1.5 0.2 Iris-setosa
30 3.4 1.4 0.2 Iris-setosa
31 3.2 1.6 0.2 Iris-setosa
32 3.1 1.6 0.2 Iris-setosa
33 3.4 1.5 0.4 Iris-setosa
34 4.1 1.5 0.1 Iris-setosa
35 4.2 1.4 0.2 Iris-setosa
36 3.1 1.5 0.1 Iris-setosa
37 3.2 1.2 0.2 Iris-setosa
38 3.5 1.3 0.2 Iris-setosa
39 3.1 1.5 0.1 Iris-setosa
40 3 1.3 0.2 Iris-setosa
41 3.4 1.5 0.2 Iris-setosa
42 3.5 1.3 0.3 Iris-setosa
43 2.3 1.3 0.3 Iris-setosa
44 3.2 1.3 0.2 Iris-setosa
45 3.5 1.6 0.6 Iris-setosa
46 3.8 1.9 0.4 Iris-setosa
47 3 1.4 0.3 Iris-setosa
48 3.8 1.6 0.2 Iris-setosa
49 3.2 1.4 0.2 Iris-setosa
50 3.7 1.5 0.2 Iris-setosa
51 3.3 1.4 0.2 Iris-setosa
52 3.2 4.7 1.4 Iris-versicolor
53 3.2 4.5 1.5 Iris-versicolor
54 3.1 4.9 1.5 Iris-versicolor
55 2.3 4 1.3 Iris-versicolor
56 2.8 4.6 1.5 Iris-versicolor
57 2.8 4.5 1.3 Iris-versicolor
58 3.3 4.7 1.6 Iris-versicolor
59 2.4 3.3 1 Iris-versicolor
60 2.9 4.6 1.3 Iris-versicolor
61 2.7 3.9 1.4 Iris-versicolor
62 2 3.5 1 Iris-versicolor
63 3 4.2 1.5 Iris-versicolor
64 2.2 4 1 Iris-versicolor
65 2.9 4.7 1.4 Iris-versicolor
66 2.9 3.6 1.3 Iris-versicolor
67 3.1 4.4 1.4 Iris-versicolor
68 3 4.5 1.5 Iris-versicolor
69 2.7 4.1 1 Iris-versicolor
70 2.2 4.5 1.5 Iris-versicolor
71 2.5 3.9 1.1 Iris-versicolor
72 3.2 4.8 1.8 Iris-versicolor
73 2.8 4 1.3 Iris-versicolor
74 2.5 4.9 1.5 Iris-versicolor
75 2.8 4.7 1.2 Iris-versicolor
76 2.9 4.3 1.3 Iris-versicolor
77 3 4.4 1.4 Iris-versicolor
78 2.8 4.8 1.4 Iris-versicolor
79 3 5 1.7 Iris-versicolor
80 2.9 4.5 1.5 Iris-versicolor
81 2.6 3.5 1 Iris-versicolor
82 2.4 3.8 1.1 Iris-versicolor
83 2.4 3.7 1 Iris-versicolor
84 2.7 3.9 1.2 Iris-versicolor
85 2.7 5.1 1.6 Iris-versicolor
86 3 4.5 1.5 Iris-versicolor
87 3.4 4.5 1.6 Iris-versicolor
88 3.1 4.7 1.5 Iris-versicolor
89 2.3 4.4 1.3 Iris-versicolor
90 3 4.1 1.3 Iris-versicolor
91 2.5 4 1.3 Iris-versicolor
92 2.6 4.4 1.2 Iris-versicolor
93 3 4.6 1.4 Iris-versicolor
94 2.6 4 1.2 Iris-versicolor
95 2.3 3.3 1 Iris-versicolor
96 2.7 4.2 1.3 Iris-versicolor
97 3 4.2 1.2 Iris-versicolor
98 2.9 4.2 1.3 Iris-versicolor
99 2.9 4.3 1.3 Iris-versicolor
100 2.5 3 1.1 Iris-versicolor
101 2.8 4.1 1.3 Iris-versicolor
102 3.3 6 2.5 Iris-virginica
103 2.7 5.1 1.9 Iris-virginica
104 3 5.9 2.1 Iris-virginica
105 2.9 5.6 1.8 Iris-virginica
106 3 5.8 2.2 Iris-virginica
107 3 6.6 2.1 Iris-virginica
108 2.5 4.5 1.7 Iris-virginica
109 2.9 6.3 1.8 Iris-virginica
110 2.5 5.8 1.8 Iris-virginica
111 3.6 6.1 2.5 Iris-virginica
112 3.2 5.1 2 Iris-virginica
113 2.7 5.3 1.9 Iris-virginica
114 3 5.5 2.1 Iris-virginica
115 2.5 5 2 Iris-virginica
116 2.8 5.1 2.4 Iris-virginica
117 3.2 5.3 2.3 Iris-virginica
118 3 5.5 1.8 Iris-virginica
119 3.8 6.7 2.2 Iris-virginica
120 2.6 6.9 2.3 Iris-virginica
121 2.2 5 1.5 Iris-virginica
122 3.2 5.7 2.3 Iris-virginica
123 2.8 4.9 2 Iris-virginica
124 2.8 6.7 2 Iris-virginica
125 2.7 4.9 1.8 Iris-virginica
126 3.3 5.7 2.1 Iris-virginica
127 3.2 6 1.8 Iris-virginica
128 2.8 4.8 1.8 Iris-virginica
129 3 4.9 1.8 Iris-virginica
130 2.8 5.6 2.1 Iris-virginica
131 3 5.8 1.6 Iris-virginica
132 2.8 6.1 1.9 Iris-virginica
133 3.8 6.4 2 Iris-virginica
134 2.8 5.6 2.2 Iris-virginica
135 2.8 5.1 1.5 Iris-virginica
136 2.6 5.6 1.4 Iris-virginica
137 3 6.1 2.3 Iris-virginica
138 3.4 5.6 2.4 Iris-virginica
139 3.1 5.5 1.8 Iris-virginica
140 3 4.8 1.8 Iris-virginica
141 3.1 5.4 2.1 Iris-virginica
142 3.1 5.6 2.4 Iris-virginica
143 3.1 5.1 2.3 Iris-virginica
144 2.7 5.1 1.9 Iris-virginica
145 3.2 5.9 2.3 Iris-virginica
146 3.3 5.7 2.5 Iris-virginica
147 3 5.2 2.3 Iris-virginica
148 2.5 5 1.9 Iris-virginica
149 3 5.2 2 Iris-virginica
150 3.4 5.4 2.3 Iris-virginica
151 3 5.1 1.8 Iris-virginica