|
- // Copyright 2023 The casbin Authors. All Rights Reserved.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
-
- package object
-
- import (
- "fmt"
-
- "github.com/danaugrs/go-tsne/tsne"
- "gonum.org/v1/gonum/mat"
- )
-
- func testTsne() {
- b := mat.NewDense(5, 3, []float64{
- 0.1, 0.1, 0.1,
- 0.7, 0.7, 0.7,
- 0.1, 0.7, 0.5,
- 0.7, 0.1, 0.2,
- 0.1, 0.7, 0.5,
- })
-
- t := tsne.NewTSNE(2, 300, 100, 300, true)
-
- Y := t.EmbedData(b, func(iter int, divergence float64, embedding mat.Matrix) bool {
- fmt.Printf("Iteration %d: divergence is %v\n", iter, divergence)
- return false
- })
-
- println(Y)
- }
-
- func (factorset *Factorset) DoTsne(dimension int) {
- floatArray := []float64{}
- for _, factor := range factorset.AllFactors {
- floatArray = append(floatArray, factor.Data...)
- }
-
- X := mat.NewDense(len(factorset.AllFactors), factorset.Dimension, floatArray)
-
- t := tsne.NewTSNE(dimension, 300, 100, 300, true)
-
- Y := t.EmbedData(X, func(iter int, divergence float64, embedding mat.Matrix) bool {
- fmt.Printf("Iteration %d: divergence is %v\n", iter, divergence)
- return false
- })
-
- rowCount, columnCount := Y.Dims()
- if rowCount != len(factorset.AllFactors) {
- panic("rowCount != len(factorset.AllFactors)")
- }
- if columnCount != dimension {
- panic("columnCount != dimension")
- }
-
- for i, factor := range factorset.AllFactors {
- arr := []float64{}
- for j := 0; j < dimension; j++ {
- arr = append(arr, Y.At(i, j))
- }
- factor.Data = arr
- }
- }
|