From 8c7273e0383e2fac27247000d62a3edde704294c Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Thu, 19 May 2022 22:57:10 +0200 Subject: Ukoliko korisnik trenira model za vise od 100 epoha. Notifikacije se salju na svakih sqrt(totalEpochs). Time aplikacija vise ne zabada. --- backend/api/api/Controllers/ModelController.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'backend') diff --git a/backend/api/api/Controllers/ModelController.cs b/backend/api/api/Controllers/ModelController.cs index be30ae6f..c574de28 100644 --- a/backend/api/api/Controllers/ModelController.cs +++ b/backend/api/api/Controllers/ModelController.cs @@ -81,10 +81,9 @@ namespace api.Controllers [ServiceFilter(typeof(MlApiCheckActionFilter))] public async Task> Epoch([FromBody] Epoch info) { - var model=_modelService.GetOneModel(info.ModelId); var user = _userService.GetUserById(model.uploaderId); - + if((model.epochs>100 && info.EpochNum%Math.Round(Math.Sqrt(model.epochs))==0) || model.epochs<=100 ||model.epochs-1==info.EpochNum) if (ChatHub.CheckUser(user._id)) foreach (var connection in ChatHub.getAllConnectionsOfUser(user._id)) await _ichat.Clients.Client(connection).SendAsync("NotifyEpoch",model.name,info.ModelId,info.Stat,model.epochs,info.EpochNum); -- cgit v1.2.3 From 9656479e2202f5399492c0e9a76f2cfedb158916 Mon Sep 17 00:00:00 2001 From: Ivan Ljubisavljevic Date: Thu, 19 May 2022 23:00:39 +0200 Subject: User update - backend fix --- backend/api/api/Controllers/UserController.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'backend') diff --git a/backend/api/api/Controllers/UserController.cs b/backend/api/api/Controllers/UserController.cs index 9f736679..9796afc2 100644 --- a/backend/api/api/Controllers/UserController.cs +++ b/backend/api/api/Controllers/UserController.cs @@ -125,7 +125,16 @@ namespace api.Controllers if (username == null) return BadRequest(); - return Ok(userService.Update(username, user)); + if (user.Username != username) + { + User user2 = userService.GetUserByUsername(user.Username); + if (user2 == null) + return Ok(userService.Update(username, user)); + else + return BadRequest("Username already exists!"); + } + else + return Ok(userService.Update(username, user)); } // DELETE api//5 -- cgit v1.2.3 From 8c9061ab07039665d1c7bc4a7a27fb9b9c76e742 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Thu, 19 May 2022 23:11:10 +0200 Subject: Ukoliko korisnik trenira vec treniran model. Rezultati ce se updajtovati. --- backend/api/api/Controllers/PredictorController.cs | 6 +++++- backend/api/api/Interfaces/IPredictorService.cs | 1 + backend/api/api/Services/ExperimentService.cs | 1 + backend/api/api/Services/PredictorService.cs | 5 +++++ 4 files changed, 12 insertions(+), 1 deletion(-) (limited to 'backend') diff --git a/backend/api/api/Controllers/PredictorController.cs b/backend/api/api/Controllers/PredictorController.cs index 3a9e6649..6ff7746a 100644 --- a/backend/api/api/Controllers/PredictorController.cs +++ b/backend/api/api/Controllers/PredictorController.cs @@ -160,7 +160,11 @@ namespace api.Controllers var model = _modelService.GetOneModel(predictor.modelId); if (model == null || user==null) return BadRequest("Model not found or user doesnt exist"); - _predictorService.Create(predictor); + Predictor p=_predictorService.Exists(predictor.modelId, predictor.experimentId); + if (p == null) + _predictorService.Create(predictor); + else + _predictorService.Update(p._id, predictor); if (ChatHub.CheckUser(user._id)) foreach(var connection in ChatHub.getAllConnectionsOfUser(user._id)) await _ichat.Clients.Client(connection).SendAsync("NotifyPredictor", predictor._id,model.name); diff --git a/backend/api/api/Interfaces/IPredictorService.cs b/backend/api/api/Interfaces/IPredictorService.cs index 16f0432a..8a8308be 100644 --- a/backend/api/api/Interfaces/IPredictorService.cs +++ b/backend/api/api/Interfaces/IPredictorService.cs @@ -12,5 +12,6 @@ namespace api.Services List GetPublicPredictors(); List SortPredictors(string userId, bool ascdsc, int latest); void Update(string id, Predictor predictor); + public Predictor Exists(string modelId, string experimentId); } } \ No newline at end of file diff --git a/backend/api/api/Services/ExperimentService.cs b/backend/api/api/Services/ExperimentService.cs index dde9111d..40dad224 100644 --- a/backend/api/api/Services/ExperimentService.cs +++ b/backend/api/api/Services/ExperimentService.cs @@ -56,5 +56,6 @@ namespace api.Services _experiment.DeleteOne(experiment => (experiment.uploaderId == userId && experiment._id == id)); _predictor.DeleteMany(predictor => (predictor.uploaderId == userId && predictor.experimentId == id)); } + } } diff --git a/backend/api/api/Services/PredictorService.cs b/backend/api/api/Services/PredictorService.cs index 756cc943..3c088a81 100644 --- a/backend/api/api/Services/PredictorService.cs +++ b/backend/api/api/Services/PredictorService.cs @@ -62,5 +62,10 @@ namespace api.Services { _predictor.ReplaceOne(predictor => predictor._id == id, predictor); } + public Predictor Exists(string modelId, string experimentId) + { + Predictor p=_predictor.Find(pre=> pre.modelId == modelId && pre.experimentId==experimentId).FirstOrDefault(); + return p; + } } } -- cgit v1.2.3 From 78c346b1296d2820e943e2918e4d3e9e57093e8f Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Fri, 20 May 2022 00:05:23 +0200 Subject: Izmenjena obrada null vrednosti i enkodiranje. --- backend/microservice/api/newmlservice.py | 48 ++++++++++-------- .../app/_pages/my-models/my-models.component.html | 43 ---------------- .../app/_pages/my-models/my-models.component.ts | 59 ---------------------- 3 files changed, 26 insertions(+), 124 deletions(-) delete mode 100644 frontend/src/app/_pages/my-models/my-models.component.html delete mode 100644 frontend/src/app/_pages/my-models/my-models.component.ts (limited to 'backend') diff --git a/backend/microservice/api/newmlservice.py b/backend/microservice/api/newmlservice.py index 85be0c2f..99e3cae5 100644 --- a/backend/microservice/api/newmlservice.py +++ b/backend/microservice/api/newmlservice.py @@ -179,6 +179,7 @@ def train(dataset, paramsModel,paramsExperiment,paramsDataset,callback): ###KATEGORIJSKE KOLONE kategorijskekolone=[] ###PRETVARANJE NUMERICKIH U KATREGORIJSKE AKO JE KORISNIK TAKO OZNACIO + columnInfo=paramsDataset['columnInfo'] columnTypes=paramsExperiment['columnTypes'] for i in range(len(columnInfo)): @@ -187,25 +188,27 @@ def train(dataset, paramsModel,paramsExperiment,paramsDataset,callback): data[col['columnName']]=data[col['columnName']].apply(str) kategorijskekolone.append(col['columnName']) #kategorijskekolone=data.select_dtypes(include=['object']).columns - print(kategorijskekolone) + #print(kategorijskekolone) ###NULL - null_value_options = paramsExperiment["nullValues"] - null_values_replacers = paramsExperiment["nullValuesReplacers"] + #null_value_options = paramsExperiment["nullValues"] # + null_values_replacers = paramsExperiment["nullValuesReplacers"] #{"column":"naziv","opt":"tip promene","value":"vrednost za zamenu"} - if(null_value_options=='replace'): + #if(null_value_options=='replace'): #print("replace null") - dict=null_values_replacers - while(len(dict)>0): - replace=dict.pop() - col=replace['column'] - opt=replace['option'] - if(opt=='replace'): - replacevalue=replace['value'] - data[col]=data[col].fillna(replacevalue) - elif(null_value_options=='delete_rows'): - data=data.dropna() - elif(null_value_options=='delete_columns'): - data=data.dropna(axis=1) + dict=null_values_replacers + while(len(dict)>0): + replace=dict.pop() + col=replace['column'] + opt=replace['option'] + + if(opt=='replace'): + replacevalue=replace['value'] + data[col]=data[col].fillna(replacevalue) + + data=data.dropna() + + #print(data) + #print(data.shape) # @@ -237,11 +240,12 @@ def train(dataset, paramsModel,paramsExperiment,paramsDataset,callback): elif(encoding=='onehot'): - category_columns=[] - for col in data.columns: - if(data[col].dtype==np.object_): - category_columns.append(col) - data=pd.get_dummies(data, columns=category_columns, prefix=category_columns) + if((len(pd.unique(data[kolona]))>20)or (kolona==output_column)): + encoder=LabelEncoder() + data[kolona]=encoder.fit_transform(data[kolona]) + + else: + data=pd.get_dummies(data, columns=kolona, prefix=kolona) elif(encoding=='ordinal'): encoder = OrdinalEncoder() @@ -296,7 +300,7 @@ def train(dataset, paramsModel,paramsExperiment,paramsDataset,callback): #x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=test, random_state=random) #print(x_train,x_test) x, x_test, y, y_test = train_test_split(x, y, test_size=test, random_state=random, shuffle=True) - x_train, x_val, y_train, y_val = train_test_split(x, y, test_size=0.15, shuffle=True) + x_train, x_val, y_train, y_val = train_test_split(x, y, test_size=(1.0-paramsModel['validationSize'])) # Treniranje modela # # diff --git a/frontend/src/app/_pages/my-models/my-models.component.html b/frontend/src/app/_pages/my-models/my-models.component.html deleted file mode 100644 index 9b281239..00000000 --- a/frontend/src/app/_pages/my-models/my-models.component.html +++ /dev/null @@ -1,43 +0,0 @@ - -
-
-
- -
-
- -
-
- - - - - - -
-
-
-

Nema rezultata

-
-
- -
- - - - - -
diff --git a/frontend/src/app/_pages/my-models/my-models.component.ts b/frontend/src/app/_pages/my-models/my-models.component.ts deleted file mode 100644 index d379fa69..00000000 --- a/frontend/src/app/_pages/my-models/my-models.component.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { Router } from '@angular/router'; -import shared from 'src/app/Shared'; -import Model from 'src/app/_data/Model'; -import { ModelsService } from 'src/app/_services/models.service'; - -@Component({ - selector: 'app-my-models', - templateUrl: './my-models.component.html', - styleUrls: ['./my-models.component.css'] -}) -export class MyModelsComponent implements OnInit { - myModels: Model[] = []; - //myModel: Model; - - constructor(private modelsS : ModelsService, private router : Router) { - - - - } - - ngOnInit(): void { - this.getAllMyModels(); - - } -/* - editModel(): void{ - this.modelsS.editModel().subscribe(m => { - this.myModel = m; - - }) - } -*/ - -deleteThisModel(model: Model): void{ - shared.openYesNoDialog('Brisanje seta podataka','Da li ste sigurni da želite da obrišete model?',() => { - this.modelsS.deleteModel(model).subscribe((response) => { - this.getAllMyModels(); - }, (error) =>{ - if (error.error == "Model with name = {name} deleted") { - shared.openDialog("Obaveštenje", "Greška prilikom brisanja modela."); - } - }); - }); -} - - -useThisModel(model: Model): void{ - - this.router.navigate(['/training']) - -} - getAllMyModels(): void{ - this.modelsS.getMyModels().subscribe(m => { - this.myModels = m; - }); - } - -} -- cgit v1.2.3