| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package main
- import (
- "fmt"
- "math/rand"
- "os"
- )
- const (
- Node int = 2708
- Edge int = 5429
- Labeled float64 = 0.05
- )
- var (
- labelName = []string{
- "Case_Based",
- "Genetic_Algorithms",
- "Neural_Networks",
- "Probabilistic_Methods",
- "Reinforcement_Learning",
- "Rule_Learning",
- "Theory",
- }
- nodeId = make([]int, 0)
- )
- func main() {
- file, err := os.Open("cora/cora.content")
- if err != nil {
- panic(err)
- }
- G := MakeGraph()
- for i := 0; i < Node; i++ {
- if i%100 == 0 {
- fmt.Println("reading node", i)
- }
- var u int
- fmt.Fscan(file, &u)
- V := MakeVector(Input)
- for j := 0; j < Input; j++ {
- fmt.Fscan(file, &V[j])
- }
- var label string
- fmt.Fscan(file, &label)
- for j := 0; j < Output; j++ {
- if labelName[j] == label {
- if rand.Float64() < Labeled {
- G.AddNode(u, V, j)
- nodeId = append(nodeId, u)
- } else {
- G.AddNode(u, V, j+Output)
- }
- break
- }
- }
- }
- file.Close()
- file, err = os.Open("cora/cora.cites")
- if err != nil {
- panic(err)
- }
- for i := 0; i < Edge; i++ {
- var u, v int
- fmt.Fscan(file, &u, &v)
- G.AddEdge(v, u)
- }
- file.Close()
- l := Train(G)
- cnt1, cnt2 := 0, 0
- for u := range G.X {
- GetEmbedding(G, u, 2, l, false)
- id, _ := l[2].E[0].Max()
- fmt.Println(u, id)
- if G.L[u] == id {
- cnt1++
- }
- if G.L[u] == id+Output {
- cnt2++
- }
- }
- fmt.Println(cnt1, "/", len(nodeId), ",", cnt2, "/", Node-len(nodeId))
- fmt.Println(100.*cnt1/len(nodeId), ",", 100.*cnt2/(Node-len(nodeId)))
- }
|