public ActionResult Create([Bind(Include = "Id,Education,Age,Housing,Loan,Duration,EmpRateVar,ConsConfId,SearchData,DeservCredit,Cpf,BornDate,Name")] Applicant applicant)
        {
            const string fileBase     = "D:/Users/Documentos/Desktop/bank-additional/bank-analiser.csv";
            const string fileLearning = "D:/Users/Documentos/Desktop/bank-additional/bank-analiser-learning.csv";

            if (ModelState.IsValid)
            {
                var applcant = new ApplicantDataCluster
                {
                    age        = applicant.Age,
                    consconfid = -(applicant.ConsConfId + 400 / 10),
                    duration   = (applicant.Duration * 10) + 500,
                    education  = applicant.Education,
                    empratevar = applicant.EmpRateVar,
                    housing    = applicant.Housing,
                    loan       = applicant.Loan
                };

                var analiseResult = new Clusterizing().GetClusterizing(fileBase, fileLearning, applcant);

                return(RedirectToAction("Index", "AnaliseResult", new { group1 = analiseResult.Distances[0],
                                                                        group2 = analiseResult.Distances[1],
                                                                        resultGroup = analiseResult.PredictedClusterId }));
            }
            else
            {
                return(RedirectToAction("index", "AnaliseResult", new { group1 = 0, group2 = 0, resultGroup = 1 }));
            }
        }
示例#2
0
        public ClusterPrediction GetClusterizing(string pathFile, string pathFileLearning, ApplicantDataCluster applicant)
        {
            string _dataPath  = pathFile;
            string _modelPath = pathFileLearning;


            var       context  = new MLContext(seed: 0);
            IDataView dataView = context.Data.LoadFromTextFile <Model.ApplicantDataCluster>(_dataPath, separatorChar: ',', hasHeader: true, allowQuoting: true,
                                                                                            trimWhitespace: true, allowSparse: true);

            string outputParam = "y";

            string[] inputParams = { "age", "education", "housing", "loan", "duration", "empratevar", "consconfid" };

            var pipeline = context.Transforms
                           .Concatenate(outputParam, inputParams)
                           .Append(context.Clustering.Trainers.KMeans("y", null, 2));

            var model = pipeline.Fit(dataView);


            using (var fileStream = new FileStream(_modelPath, FileMode.Create, FileAccess.Write, FileShare.Write))
            {
                context.Model.Save(model, dataView.Schema, fileStream);
            }

            var predictor = context.Model.CreatePredictionEngine <Model.ApplicantDataCluster, ClusterPrediction>(model);

            var result = predictor.Predict(applicant);

            return(result);
        }