コード例 #1
0
        public void Predict()
        {
            var trainingIssues = File.ReadAllLines(@"C:\Research\20580498\Classification\AreaPmi\IssueUsedTrainingDataset.txt").ToList();
            var issueTags      = File.ReadAllLines(@"C:\Research\20580498\Classification\AreaPmi\IssueTagsCleaned.txt").Select(x => x.SplitWith("##")).ToDictionary(x => x[0], x => int.Parse(x[1].SplitWith(",")[0]));
            var dimesions      = new HashSet <string>(GetSimilarityData($@"C:\Research\20580498\Classification\SingleTagsSourceSimilarityPmi\Similarity\Pmi_{trainingIssues.First()}.txt").Keys.Take(DimensionCount));

            var outputs         = trainingIssues.Select(x => issueTags[x]).ToArray();
            var distinctOutputs = outputs.Distinct().ToList();
            var outputsDictionaryMappingIndexTag = distinctOutputs.Select((x, index) => new { x, index }).ToDictionary(x => x.index, x => x.x);
            var outputsDictionaryMappingTagIndex = outputsDictionaryMappingIndexTag.ToDictionary(x => x.Value, x => x.Key);

            var formattedOutputs = outputs.Select(x => outputsDictionaryMappingTagIndex[x]).ToArray();
            var inputs           = trainingIssues.Select(x => GetSimilarityData(x, dimesions)).ToArray();
            var k = issueTags.Values.Distinct().Count();

            var knn        = new Accord.MachineLearning.KNearestNeighbors(k);
            var trainedKnn = knn.Learn(inputs, formattedOutputs);

            var testingIssues = File.ReadAllLines(@"C:\Research\20580498\Classification\AreaPmi\IssueUsedTestingDataset.txt").ToList();
            var results       = new List <string>();
            int counter       = 0;

            foreach (var testingIssue in testingIssues)
            {
                System.Console.WriteLine(counter++);
                var coordinate = GetSimilarityData(testingIssue, dimesions);
                var decision   = trainedKnn.Decide(coordinate);
                results.Add(testingIssue + "##" + outputsDictionaryMappingIndexTag[decision]);
            }

            File.WriteAllLines(@"C:\Research\20580498\Classification\AreaPmi\KnnResult_Pmi.txt", results);
        }
コード例 #2
0
        private int[] Predict(double[][] inputsTrain, int[] outputsClasses, double[][] inputsPredict)
        {
            var knn = new Accord.MachineLearning.KNearestNeighbors(k: 4);

            Accord.MachineLearning.KNearestNeighbors kNearestNeighbors = knn.Learn(inputsTrain, outputsClasses);

            return(kNearestNeighbors.Transform(inputsPredict));
        }