コード例 #1
0
ファイル: main.go プロジェクト: unixpickle/weakai
func main() {
	rand.Seed(time.Now().UnixNano())

	positives := []svm.Sample{
		{V: []float64{0.5, 0}},
		{V: []float64{0.4, 0.1}},
		{V: []float64{0.3, 0.2}},
		{V: []float64{0.5, 0.9}},
		{V: []float64{0.6, 1}},
		{V: []float64{0.4, 0.85}},
		{V: []float64{0.5, 0.5}},
	}

	negatives := []svm.Sample{
		{V: []float64{0, 0.5}},
		{V: []float64{0.1, 0.4}},
		{V: []float64{0.9, 0.5}},
		{V: []float64{1, 0.6}},
		{V: []float64{0, 0.46}},
	}

	problem := &svm.Problem{
		Positives: positives,
		Negatives: negatives,
		Kernel:    svm.PolynomialKernel(1, 2),
	}

	printProblem(problem)

	printSolution("random linear", svm.RandomlySolveLinear(problem, 100000, 5), problem)

	subgradientSolver := &svm.SubgradientSolver{
		Tradeoff: 0.001,
		StepSize: 0.1,
		Steps:    100000,
	}
	printSolution("subgradient descent", subgradientSolver.Solve(problem), problem)

	gradientSolver := &svm.GradientDescentSolver{
		Tradeoff: 0.001,
		Timeout:  time.Minute,
	}
	printSolution("gradient descent", gradientSolver.Solve(problem), problem)
}
コード例 #2
0
ファイル: main.go プロジェクト: unixpickle/weakai
func main() {
	rand.Seed(time.Now().UnixNano())

	positives := []svm.Sample{
		svm.Sample{V: []float64{0, 0}},
		svm.Sample{V: []float64{0, 0.3}},
		svm.Sample{V: []float64{0.3, 0}},
		svm.Sample{V: []float64{0.1, 0.1}},
	}

	negatives := []svm.Sample{
		svm.Sample{V: []float64{1, 1}},
		svm.Sample{V: []float64{1, 0.7}},
		svm.Sample{V: []float64{0.7, 1}},
		svm.Sample{V: []float64{0.9, 0.9}},
	}

	problem := &svm.Problem{
		Positives: positives,
		Negatives: negatives,
		Kernel:    svm.LinearKernel,
	}

	solution := svm.RandomlySolveLinear(problem, 100000, 5)
	fmt.Println("Solution from random solver:", solution)

	subgradientSolver := &svm.SubgradientSolver{
		Tradeoff: 0.001,
		Steps:    10000,
		StepSize: 0.001,
	}
	solution = subgradientSolver.Solve(problem)

	fmt.Println("Solution from subgradient solver:", solution)

	gradientSolver := &svm.GradientDescentSolver{
		Tradeoff: 0.0001,
		Timeout:  time.Minute,
	}
	solution = gradientSolver.Solve(problem).Linearize()

	fmt.Println("Solution from gradient descent solver:", solution)
}