mirror of
https://github.com/sjwhitworth/golearn.git
synced 2025-05-01 22:18:10 +08:00
Merge pull request #142 from defcube/arff3
Serialize ARFF to Writer in Addition to a File
This commit is contained in:
commit
4a2b2a30fc
16
base/arff.go
16
base/arff.go
@ -37,8 +37,14 @@ func SerializeInstancesToDenseARFFWithAttributes(inst FixedDataGrid, rawAttrs []
|
|||||||
}
|
}
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
|
|
||||||
|
return SerializeInstancesToWriterDenseARFFWithAttributes(f, inst, rawAttrs, relation)
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func SerializeInstancesToWriterDenseARFFWithAttributes(w io.Writer, inst FixedDataGrid, rawAttrs []Attribute, relation string) error {
|
||||||
// Write @relation header
|
// Write @relation header
|
||||||
f.WriteString(fmt.Sprintf("@relation %s\n\n", relation))
|
fmt.Fprintf(w, "@relation %s\n\n", relation)
|
||||||
|
|
||||||
// Get all Attribute specifications
|
// Get all Attribute specifications
|
||||||
attrs := ResolveAttributes(inst, rawAttrs)
|
attrs := ResolveAttributes(inst, rawAttrs)
|
||||||
@ -51,17 +57,17 @@ func SerializeInstancesToDenseARFFWithAttributes(inst FixedDataGrid, rawAttrs []
|
|||||||
vals := a.GetValues()
|
vals := a.GetValues()
|
||||||
t = fmt.Sprintf("{%s}", strings.Join(vals, ", "))
|
t = fmt.Sprintf("{%s}", strings.Join(vals, ", "))
|
||||||
}
|
}
|
||||||
f.WriteString(fmt.Sprintf("@attribute %s %s\n", attr.GetName(), t))
|
fmt.Fprintf(w, "@attribute %s %s\n", attr.GetName(), t)
|
||||||
}
|
}
|
||||||
f.WriteString("\n@data\n")
|
fmt.Fprint(w, "\n@data\n")
|
||||||
|
|
||||||
buf := make([]string, len(attrs))
|
buf := make([]string, len(attrs))
|
||||||
inst.MapOverRows(attrs, func(val [][]byte, row int) (bool, error) {
|
inst.MapOverRows(attrs, func(val [][]byte, row int) (bool, error) {
|
||||||
for i, v := range val {
|
for i, v := range val {
|
||||||
buf[i] = attrs[i].attr.GetStringFromSysVal(v)
|
buf[i] = attrs[i].attr.GetStringFromSysVal(v)
|
||||||
}
|
}
|
||||||
f.WriteString(strings.Join(buf, ","))
|
fmt.Fprint(w, strings.Join(buf, ","))
|
||||||
f.WriteString("\n")
|
fmt.Fprint(w, "\n")
|
||||||
return true, nil
|
return true, nil
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user