//Convert a single instance over func (as *AttributeSelection) convertInstance(inst data.Instance) data.Instance { newVasl := make([]float64, 0, len(as.output.Attributes())) for i, current := range as.selectedAttributes { fmt.Println(current, i, inst.RealValues()) newVasl = append(newVasl, inst.Value(current)) //newVasl[i] = inst.Value(current) //fmt.Println(newVasl[i], "newVasl[i]") } fmt.Println("----------------------------------------------") newInst := data.NewInstance() // newInst.SetNumAttributes(len(newVasl)) values_ := make([]float64, len(newVasl)) indices_ := make([]int, len(newVasl)) vals := 0 for i := 0; i < len(newVasl); i++ { if newVasl[i] != 0 { values_[vals] = newVasl[i] indices_[vals] = i vals++ } } values := make([]float64, vals) indices := make([]int, vals) copy(values, values_) copy(indices, indices_) // fmt.Println(values, "values") // fmt.Println(indices, "indices") for k, i := range indices { if as.output.Attribute(i).IsNominal() { newInst.AddValues(as.output.Attribute(i).Values()[int(values[k])]) } else { newInst.AddValues(as.output.Attribute(i).Name()) } } newInst.SetIndices(indices) newInst.SetRealValues(values) newInst.SetWeight(inst.Weight()) return newInst }