static void Main(string[] argv) { modshogun.init_shogun_with_defaults(); int k = 3; DoubleMatrix traindata_real = Load.load_numbers("../data/fm_train_real.dat"); DoubleMatrix testdata_real = Load.load_numbers("../data/fm_test_real.dat"); DoubleMatrix trainlab = Load.load_labels("../data/label_train_multiclass.dat"); RealFeatures feats_train = new RealFeatures(traindata_real); RealFeatures feats_test = new RealFeatures(testdata_real); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); Labels labels = new Labels(trainlab); KNN knn = new KNN(k, distance, labels); knn.train(); DoubleMatrix out_labels = knn.apply(feats_test).get_labels(); Console.WriteLine(out_labels.ToString()); modshogun.exit_shogun(); }
public static void Main() { modshogun.init_shogun_with_defaults(); double[,] traindata_real = Load.load_numbers("../data/fm_train_real.dat"); double[,] testdata_real = Load.load_numbers("../data/fm_test_real.dat"); RealFeatures feats_train = new RealFeatures(traindata_real); RealFeatures feats_test = new RealFeatures(testdata_real); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); distance.set_disable_sqrt(true); double[,] dm_train = distance.get_distance_matrix(); distance.init(feats_train, feats_test); double[,] dm_test = distance.get_distance_matrix(); foreach(double item in dm_train) { Console.Write(item); } foreach(double item in dm_test) { Console.Write(item); } modshogun.exit_shogun(); }
public static void Main() { modshogun.init_shogun_with_defaults(); double[,] traindata_real = Load.load_numbers("../data/fm_train_real.dat"); double[,] testdata_real = Load.load_numbers("../data/fm_test_real.dat"); RealFeatures feats_train = new RealFeatures(traindata_real); RealFeatures feats_test = new RealFeatures(testdata_real); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); distance.set_disable_sqrt(true); double[,] dm_train = distance.get_distance_matrix(); distance.init(feats_train, feats_test); double[,] dm_test = distance.get_distance_matrix(); foreach (double item in dm_train) { Console.Write(item); } foreach (double item in dm_test) { Console.Write(item); } modshogun.exit_shogun(); }
public virtual object run(IList para) { modshogun.init_shogun_with_defaults(); double tau_coef = (double)((double?)para[0]); DoubleMatrix traindata_real = Load.load_numbers("../data/fm_train_real.dat"); DoubleMatrix testdata_real = Load.load_numbers("../data/fm_test_real.dat"); RealFeatures feats_train = new RealFeatures(traindata_real); RealFeatures feats_test = new RealFeatures(testdata_real); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); ExponentialKernel kernel = new ExponentialKernel(feats_train, feats_train, tau_coef, distance, 10); kernel.init(feats_train, feats_train); DoubleMatrix km_train =kernel.get_kernel_matrix(); kernel.init(feats_train, feats_test); DoubleMatrix km_test =kernel.get_kernel_matrix(); ArrayList result = new ArrayList(); result.Add(km_train); result.Add(km_test); result.Add(kernel); modshogun.exit_shogun(); return (object)result; }
public static void Main() { modshogun.init_shogun_with_defaults(); double degree = 1.0; double[,] traindata_real = Load.load_numbers("../data/fm_train_real.dat"); double[,] testdata_real = Load.load_numbers("../data/fm_test_real.dat"); RealFeatures feats_train = new RealFeatures(traindata_real); RealFeatures feats_test = new RealFeatures(testdata_real); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); PowerKernel kernel = new PowerKernel(feats_train, feats_test, degree, distance); double[,] km_train = kernel.get_kernel_matrix(); kernel.init(feats_train, feats_test); double[,] km_test = kernel.get_kernel_matrix(); foreach (double item in km_train) Console.Write(item); foreach (double item in km_test) Console.Write(item); modshogun.exit_shogun(); }
public static void Main() { modshogun.init_shogun_with_defaults(); double degree = 2.0; double[,] traindata_real = Load.load_numbers("../data/fm_train_real.dat"); double[,] testdata_real = Load.load_numbers("../data/fm_test_real.dat"); RealFeatures feats_train = new RealFeatures(traindata_real); RealFeatures feats_test = new RealFeatures(testdata_real); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); WaveKernel kernel = new WaveKernel(feats_train, feats_test, degree, distance); double[,] km_train = kernel.get_kernel_matrix(); kernel.init(feats_train, feats_test); double[,] km_test = kernel.get_kernel_matrix(); foreach (double item in km_train) { Console.Write(item); } foreach (double item in km_test) { Console.Write(item); } modshogun.exit_shogun(); }
public static void Main() { modshogun.init_shogun_with_defaults(); int k = 3; double[,] traindata_real = Load.load_numbers("../data/fm_train_real.dat"); double[,] testdata_real = Load.load_numbers("../data/fm_test_real.dat"); double[] trainlab = Load.load_labels("../data/label_train_multiclass.dat"); RealFeatures feats_train = new RealFeatures(traindata_real); RealFeatures feats_test = new RealFeatures(testdata_real); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); Labels labels = new Labels(trainlab); KNN knn = new KNN(k, distance, labels); knn.train(); double[] out_labels = knn.apply(feats_test).get_labels(); foreach(double item in out_labels) { Console.Write(item); } modshogun.exit_shogun(); }
public static void Main() { modshogun.init_shogun_with_defaults(); int k = 3; double[,] traindata_real = Load.load_numbers("../data/fm_train_real.dat"); double[,] testdata_real = Load.load_numbers("../data/fm_test_real.dat"); double[] trainlab = Load.load_labels("../data/label_train_multiclass.dat"); RealFeatures feats_train = new RealFeatures(traindata_real); RealFeatures feats_test = new RealFeatures(testdata_real); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); MulticlassLabels labels = new MulticlassLabels(trainlab); KNN knn = new KNN(k, distance, labels); knn.train(); double[] out_labels = MulticlassLabels.obtain_from_generic(knn.apply(feats_test)).get_labels(); foreach (double item in out_labels) { Console.Write(item); } modshogun.exit_shogun(); }
public void ClusteringTest() { List <ClusteredData> datanew = new List <ClusteredData>(); EuclidianDistance distance = new EuclidianDistance(); K_Means k_means = new K_Means(2, 0.1, distance); ClusterAnalysis clusterAnalysis = new ClusterAnalysis(k_means); datanew.Add(new ClusteredData(0, 0)); datanew.Add(new ClusteredData(0, 20)); datanew.Add(new ClusteredData(20, 0)); datanew.Add(new ClusteredData(20, 20)); var list = clusterAnalysis.Clustering(datanew); Assert.AreEqual(2, list.Count); var flag = from value in k_means.FinishesCentroids.Values where (value.X == 0 && value.Y == 0) || (value.X == 0 && value.Y == 20) || (value.X == 20 && value.Y == 20) || (value.X == 20 && value.Y == 0) || (value.X == 10 && value.Y == 20) || (value.X == 0 && value.Y == 10) || (value.X == 20 && value.Y == 10) || (value.X == 0 && value.Y == 10) select value; Assert.AreEqual(0.1, k_means.CoefficientTaboo); Assert.AreEqual(2, k_means.CountOfClusters); Assert.IsNotNull(flag); }
static void Main(string[] argv) { modshogun.init_shogun_with_defaults(); double sigma = 1.0; DoubleMatrix traindata_real = Load.load_numbers("../data/fm_train_real.dat"); DoubleMatrix testdata_real = Load.load_numbers("../data/fm_test_real.dat"); RealFeatures feats_train = new RealFeatures(traindata_real); RealFeatures feats_test = new RealFeatures(testdata_real); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); CauchyKernel kernel = new CauchyKernel(feats_train, feats_train, sigma, distance); DoubleMatrix km_train = kernel.get_kernel_matrix(); kernel.init(feats_train, feats_test); DoubleMatrix km_test =kernel.get_kernel_matrix(); Console.WriteLine(km_train.ToString()); Console.WriteLine(km_test.ToString()); modshogun.exit_shogun(); }
public void GetValueOfDistanceTest() { EuclidianDistance euclidianDistance = new EuclidianDistance(); euclidianDistance.GetValueOfDistance(new ClusteredData(0, 0), new ClusteredData(2, 2)); Assert.AreEqual(2, 2); }
static void Main(string[] args) { List<Double> seriesA = (new double[] { 4, 5, 6, 7, 8 }).ToList(); List<Double> seriesB = (new double[] { 4, 5, 6, 7, 8 }).ToList(); var distance = new EuclidianDistance(); var cost = DTW<Double>.getDistance(seriesA, seriesB, distance, 4); Console.WriteLine("Cost: " + cost); Console.ReadLine(); }
static void Main(string[] args) { List <Double> seriesA = (new double[] { 4, 5, 6, 7, 8 }).ToList(); List <Double> seriesB = (new double[] { 4, 5, 6, 7, 8 }).ToList(); var distance = new EuclidianDistance(); var cost = DTW <Double> .getDistance(seriesA, seriesB, distance, 4); Console.WriteLine("Cost: " + cost); Console.ReadLine(); }
public static void Main() { modshogun.init_shogun_with_defaults(); double sigma = 1.0; double[,] traindata_real = Load.load_numbers("../data/fm_train_real.dat"); double[,] testdata_real = Load.load_numbers("../data/fm_test_real.dat"); RealFeatures feats_train = new RealFeatures(traindata_real); RealFeatures feats_test = new RealFeatures(testdata_real); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); CircularKernel kernel = new CircularKernel(feats_train, feats_train, sigma, distance); double[,] km_train = kernel.get_kernel_matrix(); kernel.init(feats_train, feats_test); double[,] km_test = kernel.get_kernel_matrix(); // Parse and Display km_train Console.Write("km_train:\n"); int numRows = km_train.GetLength(0); int numCols = km_train.GetLength(1); for (int i = 0; i < numRows; i++) { for (int j = 0; j < numCols; j++) { Console.Write(km_train[i, j] + " "); } Console.Write("\n"); } // Parse and Display km_test Console.Write("\nkm_test:\n"); numRows = km_test.GetLength(0); numCols = km_test.GetLength(1); for (int i = 0; i < numRows; i++) { for (int j = 0; j < numCols; j++) { Console.Write(km_test[i, j] + " "); } Console.Write("\n"); } modshogun.exit_shogun(); }
public static void Main() { modshogun.init_shogun_with_defaults(); double width = 1.7; double[,] traindata_real = Load.load_numbers("../data/fm_train_real.dat"); double[,] testdata_real = Load.load_numbers("../data/fm_test_real.dat"); RealFeatures feats_train = new RealFeatures(traindata_real); RealFeatures feats_test = new RealFeatures(testdata_real); EuclidianDistance distance = new EuclidianDistance(); DistanceKernel kernel = new DistanceKernel(feats_train, feats_test, width, distance); double[,] dm_train = distance.get_distance_matrix(); distance.init(feats_train, feats_test); double[,] dm_test = distance.get_distance_matrix(); // Parse and Display km_train Console.Write("dm_train:\n"); int numRows = dm_train.GetLength(0); int numCols = dm_train.GetLength(1); for (int i = 0; i < numRows; i++) { for (int j = 0; j < numCols; j++) { Console.Write(dm_train[i, j] + " "); } Console.Write("\n"); } // Parse and Display km_test Console.Write("\ndm_test:\n"); numRows = dm_test.GetLength(0); numCols = dm_test.GetLength(1); for (int i = 0; i < numRows; i++) { for (int j = 0; j < numCols; j++) { Console.Write(dm_test[i, j] + " "); } Console.Write("\n"); } modshogun.exit_shogun(); }
private static BasicClassifier GetTrainingClassifier() { var baseDirectory = @"C:\Users\pavel\Documents\Visual Studio 2017\Projects\DigitRecognizer\DigitRecognizer\"; var distance = new EuclidianDistance(); var classifier = new BasicClassifier(distance); var trainingPath = $@"{baseDirectory}train.csv"; var training = DataReader.ReadObservations(trainingPath); classifier.Train(training); return(classifier); }
public static void Main() { modshogun.init_shogun_with_defaults(); double sigma = 1.0; double[,] traindata_real = Load.load_numbers("../data/fm_train_real.dat"); double[,] testdata_real = Load.load_numbers("../data/fm_test_real.dat"); RealFeatures feats_train = new RealFeatures(traindata_real); RealFeatures feats_test = new RealFeatures(testdata_real); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); CauchyKernel kernel = new CauchyKernel(feats_train, feats_train, sigma, distance); double[,] km_train = kernel.get_kernel_matrix(); kernel.init(feats_train, feats_test); double[,] km_test=kernel.get_kernel_matrix(); // Parse and Display km_train Console.Write("km_train:\n"); int numRows = km_train.GetLength(0); int numCols = km_train.GetLength(1); for(int i = 0; i < numRows; i++){ for(int j = 0; j < numCols; j++){ Console.Write(km_train[i,j] +" "); } Console.Write("\n"); } // Parse and Display km_test Console.Write("\nkm_test:\n"); numRows = km_test.GetLength(0); numCols = km_test.GetLength(1); for(int i = 0; i < numRows; i++){ for(int j = 0; j < numCols; j++){ Console.Write(km_test[i,j] +" "); } Console.Write("\n"); } modshogun.exit_shogun(); }
public static void Main() { modshogun.init_shogun_with_defaults(); int merges = 3; double[,] fm_train = Load.load_numbers("../data/fm_train_real.dat"); RealFeatures feats_train = new RealFeatures(fm_train); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); Hierarchical hierarchical = new Hierarchical(merges, distance); hierarchical.train(); double[] out_distance = hierarchical.get_merge_distances(); int[,] out_cluster = hierarchical.get_cluster_pairs(); modshogun.exit_shogun(); }
public static void Main() { modshogun.init_shogun_with_defaults(); double width = 1.7; double[,] traindata_real = Load.load_numbers("../data/fm_train_real.dat"); double[,] testdata_real = Load.load_numbers("../data/fm_test_real.dat"); RealFeatures feats_train = new RealFeatures(traindata_real); RealFeatures feats_test = new RealFeatures(testdata_real); EuclidianDistance distance = new EuclidianDistance(); DistanceKernel kernel = new DistanceKernel(feats_train, feats_test, width, distance); double[,] dm_train = distance.get_distance_matrix(); distance.init(feats_train, feats_test); double[,] dm_test = distance.get_distance_matrix(); // Parse and Display km_train Console.Write("dm_train:\n"); int numRows = dm_train.GetLength(0); int numCols = dm_train.GetLength(1); for(int i = 0; i < numRows; i++){ for(int j = 0; j < numCols; j++){ Console.Write(dm_train[i,j] +" "); } Console.Write("\n"); } // Parse and Display km_test Console.Write("\ndm_test:\n"); numRows = dm_test.GetLength(0); numCols = dm_test.GetLength(1); for(int i = 0; i < numRows; i++){ for(int j = 0; j < numCols; j++){ Console.Write(dm_test[i,j] +" "); } Console.Write("\n"); } modshogun.exit_shogun(); }
public static void Main() { modshogun.init_shogun_with_defaults(); int k = 3; // already tried init_random(17) Math.init_random(17); double[,] fm_train = Load.load_numbers("../data/fm_train_real.dat"); RealFeatures feats_train = new RealFeatures(fm_train); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); KMeans kmeans = new KMeans(k, distance); kmeans.train(); double[,] out_centers = kmeans.get_cluster_centers(); kmeans.get_radiuses(); modshogun.exit_shogun(); }
static void Main(string[] argv) { modshogun.init_shogun_with_defaults(); DoubleMatrix traindata_real = Load.load_numbers("../data/fm_train_real.dat"); DoubleMatrix testdata_real = Load.load_numbers("../data/fm_test_real.dat"); RealFeatures feats_train = new RealFeatures(traindata_real); RealFeatures feats_test = new RealFeatures(testdata_real); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); DoubleMatrix dm_train = distance.get_distance_matrix(); distance.init(feats_train, feats_test); DoubleMatrix dm_test = distance.get_distance_matrix(); Console.WriteLine(dm_train.ToString()); Console.WriteLine(dm_test.ToString()); modshogun.exit_shogun(); }
internal static ArrayList run(int para) { modshogun.init_shogun_with_defaults(); int merges = para; DoubleMatrix fm_train = Load.load_numbers("../data/fm_train_real.dat"); RealFeatures feats_train = new RealFeatures(fm_train); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); Hierarchical hierarchical = new Hierarchical(merges, distance); hierarchical.train(); DoubleMatrix out_distance = hierarchical.get_merge_distances(); DoubleMatrix out_cluster = hierarchical.get_cluster_pairs(); ArrayList result = new ArrayList(); result.Add(hierarchical); result.Add(out_distance); result.Add(out_cluster); modshogun.exit_shogun(); return result; }
internal static ArrayList run(int para) { modshogun.init_shogun_with_defaults(); int k = para; init_random(17); DoubleMatrix fm_train = Load.load_numbers("../data/fm_train_real.dat"); RealFeatures feats_train = new RealFeatures(fm_train); EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train); KMeans kmeans = new KMeans(k, distance); kmeans.train(); DoubleMatrix out_centers = kmeans.get_cluster_centers(); kmeans.get_radiuses(); ArrayList result = new ArrayList(); result.Add(kmeans); result.Add(out_centers); modshogun.exit_shogun(); return result; }
internal static HandleRef getCPtr(EuclidianDistance obj) { return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; }
public int[] Generate(IEnumerable <T> examples, int k, IDistance metric = null) { #region Setup if (examples == null) { throw new InvalidOperationException("Cannot generate a model will no data!"); } if (k < 2) { throw new InvalidOperationException("Can only cluter with k > 1"); } if (Description == null) { Description = Converter.GetDescription(typeof(T)).BuildDictionaries <T>(examples); } Matrix X = Converter.Convert <T>(examples, Description.Features); // clear out zeros (if any...) //var indices = X.Indices(v => !v.All(d => d == 0), VectorType.Row); //X = X.Slice(indices, VectorType.Row); //X.Normalize(VectorType.Row); if (k >= X.Rows) { throw new InvalidOperationException( string.Format("Cannot cluster {0} items {1} different ways!", X.Rows, k)); } var means = InitializeRandom(X, k); var diff = double.MaxValue; int[] assignments = new int[X.Rows]; #endregion if (metric == null) { metric = new EuclidianDistance(); } for (int i = 0; i < 100; i++) { // Assignment step Parallel.For(0, X.Rows, j => { var min_index = -1; var min = double.MaxValue; // current example var x = X[j, VectorType.Row]; for (int m = 0; m < means.Rows; m++) { var d = means[m, VectorType.Row]; var distance = metric.Compute(x, d); if (distance < min) { min = distance; min_index = m; } assignments[j] = min_index; } }); // Update Step // new means has k rows and X.Cols columns Matrix new_means = Matrix.Zeros(k, X.Cols); Vector sum = Vector.Zeros(k); // Part 1: Sum up assignments for (int j = 0; j < X.Rows; j++) { new_means[assignments[j], VectorType.Row] += X[j, VectorType.Row]; sum[assignments[j]]++; } // Part 2: Divide by counts for (int j = 0; j < new_means.Rows; j++) { new_means[j, VectorType.Row] /= sum[j]; } // find sum of normdiff's of means diff = means.GetRows() .Zip(new_means.GetRows(), (v1, v2) => new { V1 = v1, V2 = v2 }) .Sum(a => Vector.NormDiff(a.V1, a.V2)); // small diff? return if (diff < .00001) { Centers = means; return(assignments); } means = new_means; } Centers = means; return(assignments); }
public SelectorResult Compute(float Percent, int maxrank) { if (Percent > 100 || Percent < 0) { throw new ArgumentException(""); } int countA = (int)(Percent * this._x.ColumnCount / 100); var GroupAIndex = new List <int>(); var GroupBIndex = new List <int>(); if (this._x == null) { return(null); } var resid = this._x * this._x.Transpose(); var j = this._x.ColumnCount; var p2 = Math.Round(j * Percent / 100); int k = 0; this._x = (Matrix)this._x.Transpose(); var i = maxrank; var p = new DenseMatrix(i, this._x.ColumnCount); var told = new DenseMatrix(j, i); var t = new DenseMatrix(j, i, 1); var w = new DenseMatrix(i, this._x.ColumnCount); var l = new DenseVector(i); for (int h = 0; h < i; h++) { double sumt = 0; for (int ddd = 0; ddd < j; ddd++) { sumt += Math.Abs(told[ddd, h] - t[ddd, h]); } while ((sumt > 1E-15 && k < 100)) { told.SetColumn(h, t.Column(h)); k++; var wt = t.Column(h) * this._x / t.Column(h).DotProduct(t.Column(h));//更新更改 wt = wt / Math.Sqrt(wt.DotProduct(wt)); w.SetRow(h, wt); t.SetColumn(h, this._x * w.Row(h) / w.Row(h).DotProduct(w.Row(h))); } l[h] = k; k = 0; var pt = t.Column(h) * this._x / t.Column(h).DotProduct(t.Column(h)); pt = pt / Math.Sqrt(pt.DotProduct(pt)); var tempt = Math.Sqrt(pt.DotProduct(pt)); p.SetRow(h, pt); t.SetColumn(h, t.Column(h) / tempt); w.SetRow(h, w.Row(h) / tempt); this._x = (Matrix)(this._x - t.Column(h).ToColumnMatrix() * p.Row(h).ToRowMatrix()); } var G = t.Transpose(); var dist = new EuclidianDistance(); var MM = Matlab.PDist((Matrix)G, dist, VectorType.Column); var M = Matlab.Triu(MM); double[] maxVal; int[] maxIdx; Matlab.Max(M, out maxVal, out maxIdx); var ttt = new DenseVector(maxVal); int idx = ttt.MaximumIndex(); double temp = ttt.Maximum(); GroupAIndex.AddRange(new int[] { idx, maxIdx[idx] }); for (int tr = 2; tr < p2; tr++) { var tm = new DenseMatrix(GroupAIndex.Count, MM.ColumnCount); for (int kkk = 0; kkk < GroupAIndex.Count; kkk++) { tm.SetRow(kkk, MM.Column(GroupAIndex[kkk])); foreach (var r in GroupAIndex) { tm[kkk, r] = double.NaN; } } int[] midx; double[] minval; Matlab.Min(tm, out minval, out midx); var minttt = new DenseVector(minval); temp = minttt.Maximum(); idx = minttt.MaximumIndex(); GroupAIndex.Add(idx); } GroupAIndex.Sort(); for (int r = 0; r < j; r++) { if (!GroupAIndex.Contains(r)) { GroupBIndex.Add(r); } } return(new SelectorResult() { GroupAIndex = GroupAIndex.ToArray(), GroupBIndex = GroupBIndex.ToArray() }); }
/// <summary>Generates.</summary> /// <param name="x">The Matrix to process.</param> /// <param name="k">The int to process.</param> /// <param name="metric">the metric.</param> /// <returns>An int[].</returns> public int[] Generate(Matrix x, int k, IDistance metric) { if (metric == null) { metric = new EuclidianDistance(); } X = x; var means = InitializeRandom(X, k); var assignments = new int[X.Rows]; for (var i = 0; i < 100; i++) { // Assignment step for (var j = 0; j < X.Rows; j++) { var min_index = -1; var min = double.MaxValue; for (var m = 0; m < means.Rows; m++) { var d = metric.Compute(X[j], means[m]); if (d < min) { min = d; min_index = m; } } // bounds? if (min_index == -1) { min_index = 0; } assignments[j] = min_index; } // Update Step var new_means = Matrix.Zeros(k, X.Cols); var sum = Vector.Zeros(k); // Part 1: Sum up assignments for (var j = 0; j < X.Rows; j++) { var a = assignments[j]; new_means[a] += X[j, VectorType.Row]; sum[a]++; } // Part 2: Divide by counts for (var j = 0; j < new_means.Rows; j++) { new_means[j] /= sum[j]; } // Part 3: Check for convergence // find norm of the difference if ((means - new_means).Norm() < .00001) { break; } means = new_means; } Centers = means; return(assignments); }
internal static HandleRef getCPtr(EuclidianDistance obj) { return((obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr); }
static void Main(string[] args) { List <ClusteredData> datanew = new List <ClusteredData>(); EuclidianDistance distance = new EuclidianDistance(); K_Means k_means = new K_Means(2, 0.1, distance); ClusterAnalysis clusterAnalysis = new ClusterAnalysis(k_means); datanew.Add(new ClusteredData(0, 0)); datanew.Add(new ClusteredData(0, 20)); datanew.Add(new ClusteredData(20, 0)); datanew.Add(new ClusteredData(20, 20)); var list = clusterAnalysis.Clustering(datanew); /* * List<ClusteredData> datanew = new List<ClusteredData>(); * List<K_Means> k_meansList = new List<K_Means>(); * List<List<Cluster>> clustersList = new List<List<Cluster>>(); * System.Diagnostics.Stopwatch myStopwatch = new System.Diagnostics.Stopwatch(); * EuclidianDistance distance = new EuclidianDistance(); * * datanew.Add(new ClusteredData(0,0)); * datanew.Add(new ClusteredData(0, 20)); * datanew.Add(new ClusteredData(20, 0)); * datanew.Add(new ClusteredData(20, 20)); * * var ewrt = datanew.Select(Er => Er.X); * var ety = ewrt.Average(); * * * * var e = datanew.Average(er => er.X); * * * myStopwatch.Start(); //запуск * for (var i = 0; i < 1000; i++) * { * K_Means k_means = new K_Means(2, 0.1, distance); * clustersList.Add(k_means.Clustering(datanew)); * k_meansList.Add(k_means); * Thread.Sleep(10); * * var flag = k_means.FinishesCentroids.ContainsValue(new Centroid(0, 0)); * var flag1 = k_means.FinishesCentroids.ContainsValue(new Centroid(0, 20)); * var flag2 = k_means.FinishesCentroids.ContainsValue(new Centroid(20, 20)); * var flag3 = k_means.FinishesCentroids.ContainsValue(new Centroid(20, 0)); * } * myStopwatch.Stop(); * * var fulltime = myStopwatch.ElapsedMilliseconds; * double Onetime = myStopwatch.ElapsedMilliseconds/1000.0; * * int a = 0; * int b = 0; * int c = 0; * int d = 0; * * foreach (var list in clustersList) * { * a += list.Count(q => q.Data.Count == 3); * b += list.Count(q => q.Data.Count == 2); * c += list.Count(q => q.Data.Count == 1); * d += list.Count(q => q.Data.Count == 0); * } * b = b / 2; * var ads = new Cluster(1, new Centroid(1, 10)); * //ads.IntraClusterDistance(); * * //// Поиск объектов класса Cluster в списке optimumClusters с максимальным внутрикластерным расcтоянием * //var nonOptimumClusters = from list in clustersList // определяем каждый объект из clusters как cluster * // where * // select cluster.IntraClusterDistance();// выбираем объект * */ }
/// <summary> /// Initializes a new Collaborative Filtering recommender model. /// </summary> public CofiRecommenderModel() { RelatedDistanceFunction = new EuclidianDistance(); }