testfp.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package main
  2. import (
  3. //"fmt"
  4. "fmt"
  5. "git.wecise.com/wecise/common/alg/fp"
  6. "strings"
  7. )
  8. func main() {
  9. /*
  10. db := fp.DataSet{
  11. fp.Items{"A","B","C","D","E"},
  12. fp.Items{"A","C","B"},
  13. fp.Items{"F","A","D"},
  14. fp.Items{"A","G","E","D"},
  15. fp.Items{"D","E","B"},
  16. fp.Items{"F","A","C","E"},
  17. fp.Items{"E","B"},
  18. fp.Items{"C","A","B"},
  19. fp.Items{"A","D"},
  20. fp.Items{"F","C"},
  21. fp.Items{"C"},
  22. }
  23. */
  24. // http://www.cnblogs.com/zhangchaoyang/articles/2198946.html
  25. db := fp.DataSet{
  26. fp.Items{"牛奶","鸡蛋","面包","薯片"},
  27. fp.Items{"鸡蛋","爆米花","薯片","啤酒"},
  28. fp.Items{"鸡蛋","面包","薯片"},
  29. fp.Items{"牛奶","鸡蛋","面包","爆米花","薯片","啤酒"},
  30. fp.Items{"牛奶","面包","啤酒"},
  31. fp.Items{"鸡蛋","面包","啤酒"},
  32. fp.Items{"牛奶","面包","薯片"},
  33. fp.Items{"牛奶","鸡蛋","面包","黄油","薯片"},
  34. fp.Items{"牛奶","鸡蛋","黄油","薯片"},
  35. }
  36. // https://github.com/enaeseth/python-fp-growth/blob/master/fp_growth.py
  37. // http://www.cnblogs.com/datahunter/p/3903413.html
  38. alg := fp.New()
  39. alg.Mine(db, 3, []fp.OID{})
  40. //alg.Print()
  41. for _, items := range alg.Result() {
  42. fmt.Printf("%s :%d\n", strings.Join(items[0].([]string), " "), items[1].(int))
  43. }
  44. //pattern := fp.Mine(db , 4, []string{})
  45. //pattern := fp.MineImproved(db , 3)
  46. /*
  47. fmt.Println("len ==>", len(pattern))
  48. for i:=0 ; i<len(pattern) ; i++ {
  49. if pattern[i].Count != 0 {
  50. fmt.Printf("Item: %v ,Count: %d \n", pattern[i].Pattern , pattern[i].Count)
  51. }
  52. }
  53. */
  54. }