aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
Diffstat (limited to 'backend')
-rw-r--r--backend/api/api/Controllers/ModelController.cs3
-rw-r--r--backend/api/api/Controllers/PredictorController.cs6
-rw-r--r--backend/api/api/Controllers/UserController.cs11
-rw-r--r--backend/api/api/Interfaces/IPredictorService.cs1
-rw-r--r--backend/api/api/Services/ExperimentService.cs1
-rw-r--r--backend/api/api/Services/PredictorService.cs5
-rw-r--r--backend/microservice/api/newmlservice.py48
7 files changed, 49 insertions, 26 deletions
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<ActionResult<string>> 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);
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/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/<UserController>/5
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<Predictor> GetPublicPredictors();
List<Predictor> 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;
+ }
}
}
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
#
#