From e719412e42581646a04cbd0ffa443be52d7740cf Mon Sep 17 00:00:00 2001 From: Nevena Bojovic Date: Wed, 18 May 2022 23:36:44 +0200 Subject: Grafici --- backend/api/api/appsettings.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'backend') diff --git a/backend/api/api/appsettings.json b/backend/api/api/appsettings.json index ec8f7dd8..44d63ac3 100644 --- a/backend/api/api/appsettings.json +++ b/backend/api/api/appsettings.json @@ -16,22 +16,22 @@ "UserStoreDatabaseSettings": { /* LocalHost*/ - "ConnectionString": "mongodb://127.0.0.1:27017/", + /*"ConnectionString": "mongodb://127.0.0.1:27017/", "DatabaseName": "si_project", "CollectionName": "users", "DatasetCollectionName": "Dataset", "ModelCollectionName": "Model", "PredictorCollectionName": "Predictor", "FilesCollectionName": "Files", - "ExperimentCollectionName": "Experiment" + "ExperimentCollectionName": "Experiment"*/ - /*"ConnectionString": "mongodb+srv://si_user:si_user@sidatabase.twtfm.mongodb.net/myFirstDatabase?retryWrites=true&w=majority", + "ConnectionString": "mongodb+srv://si_user:si_user@sidatabase.twtfm.mongodb.net/myFirstDatabase?retryWrites=true&w=majority", "DatabaseName": "si_db", "CollectionName": "users", "DatasetCollectionName": "Dataset", "ModelCollectionName": "Model", "PredictorCollectionName": "Predictor", "FilesCollectionName": "Files", - "ExperimentCollectionName": "Experiment" */ + "ExperimentCollectionName": "Experiment" } } \ No newline at end of file -- cgit v1.2.3 From c1f507071e65903a6efda7285fff096bb7b8a7e5 Mon Sep 17 00:00:00 2001 From: Ivan Ljubisavljevic Date: Thu, 19 May 2022 00:30:50 +0200 Subject: Sredjeno dodavanje public modela u svoje. Takodje sredjeno refreshovanje liste modela i datasetovanja prilikom brisanja. Dodati dijalozi za brisanje i dodavanje --- backend/api/api/Controllers/DatasetController.cs | 19 ++-------- backend/api/api/Controllers/ModelController.cs | 40 ++++++++++++++++++++++ backend/api/api/Models/Model.cs | 6 ---- backend/api/api/Models/Predictor.cs | 25 +------------- backend/api/api/Services/DatasetService.cs | 12 +------ backend/api/api/Services/FillAnEmptyDb.cs | 13 +++---- .../src/app/_elements/folder/folder.component.ts | 32 +++++++++++------ frontend/src/app/_services/models.service.ts | 4 +++ 8 files changed, 76 insertions(+), 75 deletions(-) (limited to 'backend') diff --git a/backend/api/api/Controllers/DatasetController.cs b/backend/api/api/Controllers/DatasetController.cs index e4741412..6fb139bd 100644 --- a/backend/api/api/Controllers/DatasetController.cs +++ b/backend/api/api/Controllers/DatasetController.cs @@ -196,7 +196,7 @@ namespace api.Controllers string ext = ".csv"; - //nesto + //Check Directory if (!Directory.Exists(folderPath)) @@ -279,19 +279,4 @@ namespace api.Controllers } } -} - -/* -{ - "_id": "", - "name": "name", - "description": "description", - "header" : ["ag","rt"], - "fileId" : "652", - "extension": "csb", - "isPublic" : true, - "accessibleByLink": true, - "dateCreated": "dateCreated", - "lastUpdated" : "proba12" -} -*/ \ No newline at end of file +} \ No newline at end of file diff --git a/backend/api/api/Controllers/ModelController.cs b/backend/api/api/Controllers/ModelController.cs index 39eb7830..be30ae6f 100644 --- a/backend/api/api/Controllers/ModelController.cs +++ b/backend/api/api/Controllers/ModelController.cs @@ -211,6 +211,8 @@ namespace api.Controllers return BadRequest("Bad parameters!");*/ model.uploaderId = getUserId(); + model.dateCreated = DateTime.Now; + model.lastUpdated = DateTime.Now; var existingModel = _modelService.GetOneModel(model.uploaderId, model.name); @@ -232,6 +234,44 @@ namespace api.Controllers } } + // POST api//stealModel + [HttpPost("stealModel")] + [Authorize(Roles = "User,Guest")] + public ActionResult StealModel([FromBody] Model model)//, bool overwrite) + { + bool overwrite = false; + //username="" ako je GUEST + //Experiment e = _experimentService.Get(model.experimentId); umesto 1 ide e.inputColumns.Length TODO!!!!!!!!!!!!!!!!! + //model.inputNeurons = e.inputColumns.Length; + /*if (_modelService.CheckHyperparameters(1, model.hiddenLayerNeurons, model.hiddenLayers, model.outputNeurons) == false) + return BadRequest("Bad parameters!");*/ + + model.uploaderId = getUserId(); + model._id = ""; + model.dateCreated = DateTime.Now; + model.lastUpdated = DateTime.Now; + model.isPublic = false; + + var existingModel = _modelService.GetOneModel(model.uploaderId, model.name); + + + if (existingModel != null && !overwrite && model.validationSize < 1 && model.validationSize > 0) + return NotFound($"Model already exisits or validation size is not between 0-1"); + else + { + //_modelService.Create(model); + //return Ok(); + if (existingModel == null) + _modelService.Create(model); + else + { + _modelService.Replace(model); + } + + return CreatedAtAction(nameof(Get), new { id = model._id }, model); + } + } + // PUT api//{name} [HttpPut("{name}")] [Authorize(Roles = "User,Guest")] diff --git a/backend/api/api/Models/Model.cs b/backend/api/api/Models/Model.cs index a807316f..bbbf201e 100644 --- a/backend/api/api/Models/Model.cs +++ b/backend/api/api/Models/Model.cs @@ -14,18 +14,14 @@ namespace api.Models public string name { get; set; } public string description { get; set; } - //datetime public DateTime dateCreated { get; set; } public DateTime lastUpdated { get; set; } - //proveriti id - //public string experimentId { get; set; } //Neural net training public string type { get; set; } public string optimizer { get; set; } public string lossFunction { get; set; } - //public int inputNeurons { get; set; } public int hiddenLayers { get; set; } public string batchSize { get; set; } public string learningRate { get; set; } @@ -36,8 +32,6 @@ namespace api.Models public string[] metrics { get; set; } public int epochs { get; set; } - //public bool isTrained { get; set; } - //public NullValues[] nullValues { get; set; } public bool randomOrder { get; set; } public bool randomTestSet { get; set; } public float randomTestSetDistribution { get; set; } diff --git a/backend/api/api/Models/Predictor.cs b/backend/api/api/Models/Predictor.cs index 530257b2..bfe95a0f 100644 --- a/backend/api/api/Models/Predictor.cs +++ b/backend/api/api/Models/Predictor.cs @@ -29,27 +29,4 @@ namespace api.Models } -} - -/** -* Paste one or more documents here - -{ - "_id": { - "$oid": "625dc348b7856ace8a6f8702" - - }, - "uploaderId" : "6242ea59486c664208d4255c", - "inputs": ["proba", - "proba2", - "proba3" - ], - "output" : "izlaz", - "isPublic" : true, - "accessibleByLink" : true, - "dateCreated" : "2022-04-11T20:33:26.937+00:00", - "experimentId" : "Neki id eksperimenta", - "modelId" : "Neki id eksperimenta", - "h5FileId" : "Neki id eksperimenta", - "metrics" : [{ }] -}*/ \ No newline at end of file +} \ No newline at end of file diff --git a/backend/api/api/Services/DatasetService.cs b/backend/api/api/Services/DatasetService.cs index f38a363b..0b84721e 100644 --- a/backend/api/api/Services/DatasetService.cs +++ b/backend/api/api/Services/DatasetService.cs @@ -104,16 +104,6 @@ namespace api.Services return dataset._id; } - /* -public bool CheckDb() -{ - Dataset? dataset = null; - dataset = _dataset.Find(dataset => dataset.username == "igrannonica").FirstOrDefault(); - - if (dataset != null) - return false; - else - return true; -}*/ + } } diff --git a/backend/api/api/Services/FillAnEmptyDb.cs b/backend/api/api/Services/FillAnEmptyDb.cs index 811e723a..cd35dc78 100644 --- a/backend/api/api/Services/FillAnEmptyDb.cs +++ b/backend/api/api/Services/FillAnEmptyDb.cs @@ -54,7 +54,7 @@ namespace api.Services dataset._id = ""; dataset.uploaderId = "000000000000000000000000"; - dataset.name = "Titanik dataset(public)"; + dataset.name = "Titanik dataset (public)"; dataset.description = "Titanik dataset"; dataset.fileId = _fileService.GetFileId(fullPath); dataset.extension = ".csv"; @@ -277,6 +277,7 @@ namespace api.Services model.lossFunction = "sparse_categorical_crossentropy"; model.hiddenLayers = 5; model.batchSize = "64"; + model.learningRate = "1"; model.outputNeurons = 0; model.layers = new[] { @@ -368,7 +369,7 @@ namespace api.Services dataset._id = ""; dataset.uploaderId = "000000000000000000000000"; dataset.name = "IMDB-Movie-Data Dataset (public)"; - dataset.description = "IMDB-Movie-Data Dataset(public)"; + dataset.description = "IMDB-Movie-Data Dataset (public)"; dataset.fileId = _fileService.GetFileId(fullPath); dataset.extension = ".csv"; dataset.isPublic = true; @@ -421,8 +422,8 @@ namespace api.Services model._id = ""; model.uploaderId = "000000000000000000000000"; - model.name = "IMDB model"; - model.description = "IMDB model"; + model.name = "IMDB model (public)"; + model.description = "IMDB model (public)"; model.dateCreated = DateTime.Now; model.lastUpdated = DateTime.Now; model.type = "regresioni"; @@ -579,8 +580,8 @@ namespace api.Services model._id = ""; model.uploaderId = "000000000000000000000000"; - model.name = "Churn model"; - model.description = "Churn model"; + model.name = "Churn model (public)"; + model.description = "Churn model (public)"; model.dateCreated = DateTime.Now; model.lastUpdated = DateTime.Now; model.type = "binarni-klasifikacioni"; diff --git a/frontend/src/app/_elements/folder/folder.component.ts b/frontend/src/app/_elements/folder/folder.component.ts index 262b3b7d..e521f264 100644 --- a/frontend/src/app/_elements/folder/folder.component.ts +++ b/frontend/src/app/_elements/folder/folder.component.ts @@ -139,10 +139,7 @@ export class FolderComponent implements AfterViewInit { _initialized: boolean = false; refreshFiles(selectedDatasetId: string | null = null, selectedModelId: string | null = null) { - this.files = [] - this.filteredFiles.length = 0; - this.folders[TabType.NewFile] = []; - this.folders[TabType.File] = []; + this.tabsToShow.forEach(tab => { this.folders[tab] = []; }); @@ -202,6 +199,7 @@ export class FolderComponent implements AfterViewInit { refreshDatasets(selectedDatasetId: string | null) { this.datasetsService.getMyDatasets().subscribe((datasets) => { this.folders[TabType.MyDatasets] = datasets; + console.log(this.filteredFiles); if (selectedDatasetId) { this.selectFile(datasets.filter(x => x._id == selectedDatasetId)[0]); } @@ -238,7 +236,7 @@ export class FolderComponent implements AfterViewInit { case FolderType.Dataset: this.formDataset!.uploadDataset((dataset: Dataset) => { this.newFile = undefined; - Shared.openDialog("Obaveštenje", "Uspešno ste dodali novi izvor podataka u kolekciju. Molimo sačekajte par trenutaka da se procesira."); + Shared.openDialog("Obaveštenje", "Uspešno ste dodali novi izvor podataka u kolekciju. Molimo sačekajte par trenutaka da se obradi."); this.refreshFiles(); }, () => { @@ -287,17 +285,20 @@ export class FolderComponent implements AfterViewInit { deleteFile(file: FolderFile, event: Event) { event.stopPropagation(); - //console.log('delete'); + this.filteredFiles.splice(this.filteredFiles.indexOf(file), 1); + this.files.splice(this.files.indexOf(file), 1); switch (this.type) { case FolderType.Dataset: this.datasetsService.deleteDataset(file).subscribe((response) => { - this.filteredFiles.splice(this.filteredFiles.indexOf(file), 1); - this.refreshFiles(null); + Shared.openDialog("Obaveštenje", "Uspešno ste obrisali odabrani izvor podataka."); + //this.filteredFiles.splice(this.files.indexOf(file), 1); + //this.refreshFiles(); }); break; case FolderType.Model: this.modelsService.deleteModel(file).subscribe((response) => { - this.refreshFiles(null); + Shared.openDialog("Obaveštenje", "Uspešno ste obrisali odabranu konfiguraciju neuronske mreže."); + //this.refreshFiles(); }); break; case FolderType.Experiment: @@ -317,13 +318,22 @@ export class FolderComponent implements AfterViewInit { (file).isPreProcess = true; (file).isPublic = false; this.datasetsService.stealDataset(file).subscribe((response) => { - this.filteredFiles.splice(this.filteredFiles.indexOf(file), 1); + Shared.openDialog("Obaveštenje", "Uspešno ste dodali javni izvor podataka u vašu kolekciju."); this.refreshFiles(null); + }, (error:any) => { + if (error.error == "Dataset with this name already exists") { + Shared.openDialog("Obaveštenje", "Izvor podataka sa ovim imenom postoji u vašoj kolekciji."); + } }); break; case FolderType.Model: - this.modelsService.addModel(file).subscribe((response) => { + this.modelsService.stealModel(file).subscribe((response) => { + Shared.openDialog("Obaveštenje", "Uspešno ste dodali javnu konfiguraciju neuronske mreže u vašu kolekciju."); this.refreshFiles(null); + }, (error:any) => { + if (error.error == "Model already exisits or validation size is not between 0-1") { + Shared.openDialog("Obaveštenje", "Model sa ovim imenom postoji u vašoj kolekciji."); + } }); break; case FolderType.Experiment: diff --git a/frontend/src/app/_services/models.service.ts b/frontend/src/app/_services/models.service.ts index fc888556..5f7b1947 100644 --- a/frontend/src/app/_services/models.service.ts +++ b/frontend/src/app/_services/models.service.ts @@ -31,6 +31,10 @@ export class ModelsService { addModel(model: Model): Observable { return this.http.post(`${Configuration.settings.apiURL}/model/add`, model, { headers: this.authService.authHeader() }); } + + stealModel(model: Model): Observable { + return this.http.post(`${Configuration.settings.apiURL}/model/stealModel`, model, { headers: this.authService.authHeader() }); + } addDataset(dataset: Dataset): Observable { return this.http.post(`${Configuration.settings.apiURL}/dataset/add`, dataset, { headers: this.authService.authHeader() }); } -- cgit v1.2.3 From bd2f7b29e92e3cda13b0a77590c4c3c1e09870d1 Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Thu, 19 May 2022 00:52:27 +0200 Subject: Izmenjeno čuvanje metrika, ograničen broj skrivenih slojeva. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/microservice/api/controller.py | 8 +-- backend/microservice/api/newmlservice.py | 66 ++++++++++++---------- .../_elements/form-model/form-model.component.ts | 2 +- 3 files changed, 39 insertions(+), 37 deletions(-) (limited to 'backend') diff --git a/backend/microservice/api/controller.py b/backend/microservice/api/controller.py index 7852b63d..6f483008 100644 --- a/backend/microservice/api/controller.py +++ b/backend/microservice/api/controller.py @@ -82,9 +82,6 @@ def train(): files = {'file': open(filepath, 'rb')} r=requests.post(url, files=files,data={"uploaderId":paramsExperiment['uploaderId']}) fileId=r.text - m = [] - for attribute, value in result.items(): - m.append({"Name" : attribute, "JsonValue" : value}) predictor = { "_id" : "", "uploaderId" : paramsModel["uploaderId"], @@ -95,13 +92,14 @@ def train(): "experimentId" : paramsExperiment["_id"], "modelId" : paramsModel["_id"], "h5FileId" : fileId, - "metrics" : m, + "metrics" : result, "finalMetrics":finalMetrics - } #print(predictor) + url = config.api_url + "/Predictor/add" r = requests.post(url, json=predictor).text + print(r) return r diff --git a/backend/microservice/api/newmlservice.py b/backend/microservice/api/newmlservice.py index fd21f8ce..427111a7 100644 --- a/backend/microservice/api/newmlservice.py +++ b/backend/microservice/api/newmlservice.py @@ -393,14 +393,14 @@ def train(dataset, paramsModel,paramsExperiment,paramsDataset,callback): macro_averaged_f1=sm.f1_score(y_test, y_pred, average = 'macro') micro_averaged_f1=sm.f1_score(y_test, y_pred, average = 'micro') - metrics= { - "macro_averaged_precision" :float(macro_averaged_precision), - "micro_averaged_precision" : float(micro_averaged_precision), - "macro_averaged_recall" : float(macro_averaged_recall), - "micro_averaged_recall" : float(micro_averaged_recall), - "macro_averaged_f1" : float(macro_averaged_f1), - "micro_averaged_f1" : float(micro_averaged_f1) - } + metrics= [ + {"Name":"macro_averaged_precision", "JsonValue":str(macro_averaged_precision)}, + {"Name":"micro_averaged_precision" ,"JsonValue":str(micro_averaged_precision)}, + {"Name":"macro_averaged_recall", "JsonValue":str(macro_averaged_recall)}, + {"Name":"micro_averaged_recall" ,"JsonValue":str(micro_averaged_recall)}, + {"Name":"macro_averaged_f1","JsonValue": str(macro_averaged_f1)}, + {"Name":"micro_averaged_f1", "JsonValue": str(micro_averaged_f1)} + ] #vizuelizacija u python-u #from ann_visualizer.visualize import ann_viz; @@ -461,20 +461,20 @@ def train(dataset, paramsModel,paramsExperiment,paramsDataset,callback): f1 = float(sm.f1_score(y_test,y_pred)) fpr, tpr, _ = sm.roc_curve(y_test,y_pred) logloss = float(sm.log_loss(y_test, y_pred)) - metrics= { - "accuracy" : accuracy, - "precision" : precision, - "recall" : recall, - "specificity" : specificity, - "f1" : f1, - "tn" : float(tn), - "fp" : float(fp), - "fn" : float(fn), - "tp" : float(tp), - "fpr" : fpr.tolist(), - "tpr" : tpr.tolist(), - "logloss" : logloss - } + metrics= [ + {"Name":"accuracy" ,"JsonValue": str(accuracy)}, + {"Name":"precision","JsonValue": str(precision)}, + {"Name":"recall" , "JsonValue":str(recall)}, + {"Name":"specificity" ,"JsonValue":str(specificity)}, + {"Name":"f1" ,"JsonValue": str(f1)}, + {"Name":"tn" , "JsonValue":str(tn)}, + {"Name":"fp" , "JsonValue":str(fp)}, + {"Name":"fn" , "JsonValue":str(fn)}, + {"Name":"tp" , "JsonValue":str(tp)}, + {"Name":"fpr" ,"JsonValue": str(fpr.tolist())}, + {"Name":"tpr" , "JsonValue":str(tpr.tolist())}, + {"Name":"logloss" , "JsonValue":str(logloss)} + ] return filepath,hist,metrics @@ -514,13 +514,15 @@ def train(dataset, paramsModel,paramsExperiment,paramsDataset,callback): history=classifier.fit( x=x_train, y=y_train, epochs = paramsModel['epochs'],batch_size=int(paramsModel['batchSize']),callbacks=callback(x_test, y_test,paramsModel['_id']),validation_data=(x_val, y_val)) hist=history.history + print() y_pred=classifier.predict(x_test) #print(classifier.evaluate(x_test, y_test)) classifier.save(filepath, save_format='h5') - + metrics={} mse = float(sm.mean_squared_error(y_test,y_pred)) + metrics.append mae = float(sm.mean_absolute_error(y_test,y_pred)) mape = float(sm.mean_absolute_percentage_error(y_test,y_pred)) rmse = float(np.sqrt(sm.mean_squared_error(y_test,y_pred))) @@ -531,14 +533,16 @@ def train(dataset, paramsModel,paramsExperiment,paramsDataset,callback): n = 40 k = 2 adj_r2 = float(1 - ((1-r2)*(n-1)/(n-k-1))) - metrics= {"mse" : mse, - "mae" : mae, - "mape" : mape, - "rmse" : rmse, - "rmsle" : rmsle, - "r2" : r2, - "adj_r2" : adj_r2 - } + metrics= [ + {"Name":"mse","JsonValue":str(mse)}, + + {"Name":"mae","JsonValue":str(mae)}, + {"Name":"mape","JsonValue":str( mape)}, + {"Name":"rmse","JsonValue":str(rmse)}, + {"Name":"rmsle","JsonValue":str(rmsle)}, + {"Name":"r2","JsonValue":str( r2)}, + {"Name":"adj_r2","JsonValue":str(adj_r2)} + ] return filepath,hist,metrics diff --git a/frontend/src/app/_elements/form-model/form-model.component.ts b/frontend/src/app/_elements/form-model/form-model.component.ts index c9e2fc8e..9e6082c4 100644 --- a/frontend/src/app/_elements/form-model/form-model.component.ts +++ b/frontend/src/app/_elements/form-model/form-model.component.ts @@ -84,7 +84,7 @@ export class FormModelComponent implements AfterViewInit { } addLayer() { - if (this.newModel.hiddenLayers < 128) { + if (this.newModel.hiddenLayers < 150) { this.newModel.layers.push(new Layer(this.newModel.layers.length, this.selectedActivation, this.selectedNumberOfNeurons, this.selectedRegularisation, this.selectedRegularisationRate)); this.newModel.hiddenLayers += 1; -- cgit v1.2.3 From 6e2ce46164efc843302b30b6fc3b9e080d5f604d Mon Sep 17 00:00:00 2001 From: Ivan Ljubisavljevic Date: Thu, 19 May 2022 01:08:10 +0200 Subject: Mat-icon upgrade --- backend/api/api/Controllers/DatasetController.cs | 1 - backend/api/api/Services/MlConnectionService.cs | 13 ------------- frontend/src/app/_elements/folder/folder.component.css | 2 +- frontend/src/app/_elements/folder/folder.component.html | 10 +++++----- 4 files changed, 6 insertions(+), 20 deletions(-) (limited to 'backend') diff --git a/backend/api/api/Controllers/DatasetController.cs b/backend/api/api/Controllers/DatasetController.cs index 6fb139bd..849d9884 100644 --- a/backend/api/api/Controllers/DatasetController.cs +++ b/backend/api/api/Controllers/DatasetController.cs @@ -144,7 +144,6 @@ namespace api.Controllers [Authorize(Roles = "User,Guest")] public async Task> Post([FromBody] Dataset dataset) { - Console.WriteLine("PROBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); string uploaderId = getUserId(); dataset.uploaderId = uploaderId; diff --git a/backend/api/api/Services/MlConnectionService.cs b/backend/api/api/Services/MlConnectionService.cs index 0ecdb1af..6a307e0d 100644 --- a/backend/api/api/Services/MlConnectionService.cs +++ b/backend/api/api/Services/MlConnectionService.cs @@ -63,19 +63,6 @@ namespace api.Services foreach (var connection in ChatHub.getAllConnectionsOfUser(id)) await _ichat.Clients.Client(connection).SendAsync("NotifyDataset",newDataset.name,newDataset._id); - - string proba = ""; - - for (int i = 0; i < newDataset.cMatrix.Length; i++) - { - proba = i +" "; - for (int j = 0; j < newDataset.cMatrix[i].Length; j++) - proba += newDataset.cMatrix[i][j] + "f, "; - - Console.WriteLine(proba); - proba = ""; - } - return; } diff --git a/frontend/src/app/_elements/folder/folder.component.css b/frontend/src/app/_elements/folder/folder.component.css index 4a06faa4..1a1e70ec 100644 --- a/frontend/src/app/_elements/folder/folder.component.css +++ b/frontend/src/app/_elements/folder/folder.component.css @@ -183,7 +183,7 @@ .file-bottom-buttons { position: absolute; bottom: 15px; - right: 15px; + right: 4%; display: flex; flex-direction: row-reverse; } diff --git a/frontend/src/app/_elements/folder/folder.component.html b/frontend/src/app/_elements/folder/folder.component.html index de9a6353..97ae0d23 100644 --- a/frontend/src/app/_elements/folder/folder.component.html +++ b/frontend/src/app/_elements/folder/folder.component.html @@ -57,10 +57,10 @@
@@ -82,15 +82,15 @@
-- cgit v1.2.3 From 7e1226a568a2c2a90f48a71f09828e909c23e266 Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Thu, 19 May 2022 12:19:37 +0200 Subject: Izmenjeno slanje metrika za regresiju. --- backend/microservice/api/newmlservice.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'backend') diff --git a/backend/microservice/api/newmlservice.py b/backend/microservice/api/newmlservice.py index 427111a7..bcff5a33 100644 --- a/backend/microservice/api/newmlservice.py +++ b/backend/microservice/api/newmlservice.py @@ -514,15 +514,13 @@ def train(dataset, paramsModel,paramsExperiment,paramsDataset,callback): history=classifier.fit( x=x_train, y=y_train, epochs = paramsModel['epochs'],batch_size=int(paramsModel['batchSize']),callbacks=callback(x_test, y_test,paramsModel['_id']),validation_data=(x_val, y_val)) hist=history.history - print() + y_pred=classifier.predict(x_test) #print(classifier.evaluate(x_test, y_test)) classifier.save(filepath, save_format='h5') - metrics={} - + mse = float(sm.mean_squared_error(y_test,y_pred)) - metrics.append mae = float(sm.mean_absolute_error(y_test,y_pred)) mape = float(sm.mean_absolute_percentage_error(y_test,y_pred)) rmse = float(np.sqrt(sm.mean_squared_error(y_test,y_pred))) -- cgit v1.2.3 From 2c75cea0ef88d9db56e30b31470edb1bcc437350 Mon Sep 17 00:00:00 2001 From: Sonja Galovic Date: Thu, 19 May 2022 12:55:33 +0200 Subject: Popravljena numeracija redova kod stranicenja u column-table. Dodat submit na enter gde je falio. Css izmene. --- backend/api/api/appsettings.json | 8 ++++---- .../column-table/column-table.component.css | 2 +- .../column-table/column-table.component.html | 4 ++-- .../_modals/alert-dialog/alert-dialog.component.html | 16 ++++++++-------- .../_modals/alert-dialog/alert-dialog.component.ts | 6 ++++-- .../encoding-dialog/encoding-dialog.component.html | 20 +++++++++++--------- .../yes-no-dialog/yes-no-dialog.component.html | 8 +++++--- .../_modals/yes-no-dialog/yes-no-dialog.component.ts | 9 ++++++--- 8 files changed, 41 insertions(+), 32 deletions(-) (limited to 'backend') diff --git a/backend/api/api/appsettings.json b/backend/api/api/appsettings.json index 44d63ac3..ec8f7dd8 100644 --- a/backend/api/api/appsettings.json +++ b/backend/api/api/appsettings.json @@ -16,22 +16,22 @@ "UserStoreDatabaseSettings": { /* LocalHost*/ - /*"ConnectionString": "mongodb://127.0.0.1:27017/", + "ConnectionString": "mongodb://127.0.0.1:27017/", "DatabaseName": "si_project", "CollectionName": "users", "DatasetCollectionName": "Dataset", "ModelCollectionName": "Model", "PredictorCollectionName": "Predictor", "FilesCollectionName": "Files", - "ExperimentCollectionName": "Experiment"*/ + "ExperimentCollectionName": "Experiment" - "ConnectionString": "mongodb+srv://si_user:si_user@sidatabase.twtfm.mongodb.net/myFirstDatabase?retryWrites=true&w=majority", + /*"ConnectionString": "mongodb+srv://si_user:si_user@sidatabase.twtfm.mongodb.net/myFirstDatabase?retryWrites=true&w=majority", "DatabaseName": "si_db", "CollectionName": "users", "DatasetCollectionName": "Dataset", "ModelCollectionName": "Model", "PredictorCollectionName": "Predictor", "FilesCollectionName": "Files", - "ExperimentCollectionName": "Experiment" + "ExperimentCollectionName": "Experiment" */ } } \ No newline at end of file diff --git a/frontend/src/app/_elements/column-table/column-table.component.css b/frontend/src/app/_elements/column-table/column-table.component.css index f7f07e62..311773f7 100644 --- a/frontend/src/app/_elements/column-table/column-table.component.css +++ b/frontend/src/app/_elements/column-table/column-table.component.css @@ -22,7 +22,7 @@ table.fixed td { table.fixed th { overflow: hidden; - max-width: 120px; + max-width: 250px; min-width: 120px; vertical-align: middle; background-color: var(--ns-primary-50); diff --git a/frontend/src/app/_elements/column-table/column-table.component.html b/frontend/src/app/_elements/column-table/column-table.component.html index 31c32dfd..bb5914bd 100644 --- a/frontend/src/app/_elements/column-table/column-table.component.html +++ b/frontend/src/app/_elements/column-table/column-table.component.html @@ -35,7 +35,7 @@ - #{{i}} + #{{((this.begin/10)+1)*10-10+i+1}}
{{col}} @@ -200,7 +200,7 @@
- Nema null vrednosti. + Nema nedostajućih vrednosti.
diff --git a/frontend/src/app/_modals/alert-dialog/alert-dialog.component.html b/frontend/src/app/_modals/alert-dialog/alert-dialog.component.html index 2d7e4d86..84793260 100644 --- a/frontend/src/app/_modals/alert-dialog/alert-dialog.component.html +++ b/frontend/src/app/_modals/alert-dialog/alert-dialog.component.html @@ -1,9 +1,9 @@ - - -

{{data.title}}

-
- {{data.message}} -
-
+

{{data.title}}

+
+
+ {{data.message}} +
+
+
-
\ No newline at end of file +
\ No newline at end of file diff --git a/frontend/src/app/_modals/alert-dialog/alert-dialog.component.ts b/frontend/src/app/_modals/alert-dialog/alert-dialog.component.ts index e15f3c6f..7558b527 100644 --- a/frontend/src/app/_modals/alert-dialog/alert-dialog.component.ts +++ b/frontend/src/app/_modals/alert-dialog/alert-dialog.component.ts @@ -20,9 +20,11 @@ export class AlertDialogComponent { //public dialog: MatDialog ) {} + withEnterKey(keyboardEvent: KeyboardEvent) { + if (keyboardEvent.code == "Enter" || keyboardEvent.code == "NumpadEnter") + this.onOkClick(); + } onOkClick(): void { this.dialogRef.close(); } - - } diff --git a/frontend/src/app/_modals/encoding-dialog/encoding-dialog.component.html b/frontend/src/app/_modals/encoding-dialog/encoding-dialog.component.html index 08c1f26b..fed8f8d7 100644 --- a/frontend/src/app/_modals/encoding-dialog/encoding-dialog.component.html +++ b/frontend/src/app/_modals/encoding-dialog/encoding-dialog.component.html @@ -1,15 +1,17 @@

Enkodiranje svih kolona

Sve izabrane kolone biće enkodirane metodom:

-
- - - - {{ optionName }} - - - -
+
+
+ + + + {{ optionName }} + + + +
+
diff --git a/frontend/src/app/_modals/yes-no-dialog/yes-no-dialog.component.html b/frontend/src/app/_modals/yes-no-dialog/yes-no-dialog.component.html index 06e74093..77e7be42 100644 --- a/frontend/src/app/_modals/yes-no-dialog/yes-no-dialog.component.html +++ b/frontend/src/app/_modals/yes-no-dialog/yes-no-dialog.component.html @@ -1,8 +1,10 @@

{{data.title}}

- {{data.message}} +
+ {{data.message}} +
- - + +
\ No newline at end of file diff --git a/frontend/src/app/_modals/yes-no-dialog/yes-no-dialog.component.ts b/frontend/src/app/_modals/yes-no-dialog/yes-no-dialog.component.ts index de1cdd4f..a7db1e7f 100644 --- a/frontend/src/app/_modals/yes-no-dialog/yes-no-dialog.component.ts +++ b/frontend/src/app/_modals/yes-no-dialog/yes-no-dialog.component.ts @@ -24,10 +24,13 @@ export class YesNoDialogComponent { onNoClick(): void { this.dialogRef.close(); } - onYesClick():void{ + + withEnterKey(keyboardEvent: KeyboardEvent) { + if (keyboardEvent.code == "Enter" || keyboardEvent.code == "NumpadEnter") + this.onYesClick(); + } + onYesClick():void { this.data.yesFunction(); this.dialogRef.close(); } - - } -- cgit v1.2.3