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 })); } }
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); }