Пример #1
0
        private async Task CalculateProbability(PredictionRequestFile predictionRequestFile, PredictionResponseItem predictionResponseItem)
        {
            string apiKey = this.serviceConfiguration.PredictionServiceKey;
            string apiUrl = this.serviceConfiguration.PredictionServiceUrl;
            var    configurationTypeFullyQualifiedName = this.serviceConfiguration.PredictionServiceConfigurationType;
            var    configurationType = Type.GetType(configurationTypeFullyQualifiedName, true);

            var configuration = (IPredictionServiceConfiguration)Activator.CreateInstance(configurationType);

            predictionResponseItem.SuccessProbability = 0;
            predictionResponseItem.ProbableSuccess    = false;

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(apiUrl);
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);

                HttpResponseMessage httpResponse = await client.PostAsync("", new StringContent(configuration.Serialize(predictionRequestFile)));

                if (httpResponse.IsSuccessStatusCode)
                {
                    string result = await httpResponse.Content.ReadAsStringAsync();

                    JObject jObject = JObject.Parse(result);

                    var scoredProbabilities = jObject.SelectToken("Results.output1[0]['Scored Probabilities']").ToObject <double>();
                    var scoredLabels        = jObject.SelectToken("Results.output1[0]['Scored Labels']").ToObject <int>();

                    predictionResponseItem.SuccessProbability = scoredProbabilities;
                    predictionResponseItem.ProbableSuccess    = scoredLabels == 1 ? true : false;
                }
            }
        }
        public string Serialize(PredictionRequestFile predictionRequestFile)
        {
            var scoreRequest = new
            {
                Inputs = new Dictionary <string, List <Dictionary <string, string> > >
                {
                    {
                        "input1",
                        new List <Dictionary <string, string> >
                        {
                            new Dictionary <string, string>
                            {
                                { "NumberOfRevisions", predictionRequestFile.NumberOfRevisions.ToString() },
                                { "NumberOfDistinctCommitters", predictionRequestFile.NumberOfDistinctCommitters.ToString() },
                                { "NumberOfModifiedLines", predictionRequestFile.NumberOfModifiedLines.ToString() },
                                { "BuildResult", "0" },
                                { "TotalNumberOfRevisions", predictionRequestFile.TotalNumberOfRevisions.ToString() },
                                { "BuildCommitDateTimeLocal", "" },
                                { "PreviousBuildResult", predictionRequestFile.PreviousBuildResult.ToString() },
                                { "CCMMax", predictionRequestFile.CCMMax.ToString() },
                                { "CCMMd", predictionRequestFile.CCMMd.GetValueOrDefault().ToString(System.Globalization.CultureInfo.InvariantCulture) },
                                { "CCMAvg", predictionRequestFile.CCMAvg.GetValueOrDefault().ToString(System.Globalization.CultureInfo.InvariantCulture) },
                            }
                        }
                    },
                },
                GlobalParameters = new Dictionary <string, string>
                {
                    { "Append score columns to output1", "true" },
                }
            };

            return(JsonConvert.SerializeObject(scoreRequest));
        }
Пример #3
0
 private static void UpdatePrediction(PredictionRequestFile predictionRequestFile, Metric metric)
 {
     predictionRequestFile.NumberOfDistinctCommitters = 1;
     predictionRequestFile.NumberOfRevisions          = 1;
     predictionRequestFile.TotalNumberOfRevisions     = (metric.TotalNumberOfRevisions ?? 0) + 1;
     predictionRequestFile.PreviousBuildResult        = metric.PreviousBuildResult;
 }
        public string Serialize(PredictionRequestFile predictionRequestFile)
        {
            var scoreRequest = new
            {
                Inputs = new Dictionary <string, List <Dictionary <string, string> > >
                {
                    {
                        "input1",
                        new List <Dictionary <string, string> >
                        {
                            new Dictionary <string, string>
                            {
                                { "NumberOfRevisions", predictionRequestFile.NumberOfRevisions.ToString() },
                                { "CCMMax", predictionRequestFile.CCMMax.ToString() },
                                { "NumberOfDistinctCommitters", predictionRequestFile.NumberOfDistinctCommitters.ToString() },
                                { "NumberOfModifiedLines", predictionRequestFile.NumberOfModifiedLines.ToString() },
                                { "TotalNumberOfRevisions", predictionRequestFile.TotalNumberOfRevisions.ToString() },
                                {
                                    // Do as if the change was made now - minutes from mindnight are used in the model
                                    "BuildCommitDateTimeLocal",
                                    (DateTime.Now.Hour * 60 + DateTime.Now.Minute).ToString()
                                },
                            }
                        }
                    },
                },
                GlobalParameters = new Dictionary <string, string>
                {
                    { "Append score columns to output1", "true" },
                }
            };

            return(JsonConvert.SerializeObject(scoreRequest));
        }