From ccdec90928311c7986f9c57d3e32d126773d9c3a Mon Sep 17 00:00:00 2001 From: Sonja Galovic Date: Tue, 19 Apr 2022 15:59:56 +0200 Subject: Model.service: napravljena fja za dobijanje korisnikovih modela odredjenog tipa problema. Kad izabere eksperiment, izlistace mu se modeli istog tipa problema kao sto je i eksperiment. --- .../src/app/_elements/model-load/model-load.component.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'frontend/src/app/_elements') diff --git a/frontend/src/app/_elements/model-load/model-load.component.ts b/frontend/src/app/_elements/model-load/model-load.component.ts index dbca3d17..4541c114 100644 --- a/frontend/src/app/_elements/model-load/model-load.component.ts +++ b/frontend/src/app/_elements/model-load/model-load.component.ts @@ -38,9 +38,16 @@ export class ModelLoadComponent implements OnInit { showMyModels: boolean = true; constructor(private modelsService: ModelsService) { - this.modelsService.getMyModels().subscribe((models) => { - this.myModels = models; - }); + if (this.forExperiment == undefined) { + this.modelsService.getMyModels().subscribe((models) => { + this.myModels = models; + }); + } + else { + this.modelsService.getMyModelsByType(this.forExperiment.type).subscribe((models) => { + this.myModels = models; + }); + } } ngOnInit(): void { -- cgit v1.2.3 From 9c0b48ed66e363928e8970f9b328c0bb3eee6c2d Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Tue, 19 Apr 2022 17:57:17 +0200 Subject: Dodate su komponente za grafik. --- backend/microservice/api/newmlservice.py | 22 +++++++-- frontend/package.json | 3 +- .../_elements/line-chart/line-chart.component.css | 0 .../_elements/line-chart/line-chart.component.html | 9 ++++ .../line-chart/line-chart.component.spec.ts | 25 ++++++++++ .../_elements/line-chart/line-chart.component.ts | 57 ++++++++++++++++++++++ frontend/src/app/app.module.ts | 4 +- 7 files changed, 114 insertions(+), 6 deletions(-) create mode 100644 frontend/src/app/_elements/line-chart/line-chart.component.css create mode 100644 frontend/src/app/_elements/line-chart/line-chart.component.html create mode 100644 frontend/src/app/_elements/line-chart/line-chart.component.spec.ts create mode 100644 frontend/src/app/_elements/line-chart/line-chart.component.ts (limited to 'frontend/src/app/_elements') diff --git a/backend/microservice/api/newmlservice.py b/backend/microservice/api/newmlservice.py index 604e4d3c..219f8a20 100644 --- a/backend/microservice/api/newmlservice.py +++ b/backend/microservice/api/newmlservice.py @@ -155,7 +155,19 @@ def train(dataset, paramsModel,paramsExperiment,paramsDataset,callback): data.pop(col) # ### Enkodiranje +<<<<<<< HEAD encodings=paramsExperiment["encodings"] +======= + + from sklearn.preprocessing import LabelEncoder + kategorijskekolone=data.select_dtypes(include=['object']).columns + encoder=LabelEncoder() + for kolona in data.columns: + if(kolona in kategorijskekolone): + data[kolona]=encoder.fit_transform(data[kolona]) + ''' + encoding=paramsExperiment["encoding"] +>>>>>>> 7d57bb9 (Dodate su komponente za grafik.) datafront=dataset.copy() svekolone=datafront.columns kategorijskekolone=datafront.select_dtypes(include=['object']).columns @@ -207,6 +219,8 @@ def train(dataset, paramsModel,paramsExperiment,paramsDataset,callback): category_columns.append(col) encoder=ce.BaseNEncoder(cols=category_columns, return_df=True, base=5) encoder.fit_transform(data) + + ''' # # Input - output # @@ -301,7 +315,7 @@ def train(dataset, paramsModel,paramsExperiment,paramsDataset,callback): - classifier.compile(loss =paramsModel["lossFunction"] , optimizer = paramsModel['optimizer'] , metrics =paramsModel['metrics']) + classifier.compile(loss =paramsModel["lossFunction"] , optimizer = paramsModel['optimizer'] , metrics =['accuracy','mae','mse']) history=classifier.fit(x_train, y_train, epochs = paramsModel['epochs'],batch_size=paramsModel['batchSize'],callbacks=callback(x_test, y_test,paramsModel['_id'])) @@ -333,7 +347,7 @@ def train(dataset, paramsModel,paramsExperiment,paramsDataset,callback): classifier.add(tf.keras.layers.Dense(units=paramsModel['hiddenLayerNeurons'], activation=paramsModel['hiddenLayerActivationFunctions'][i+1]))#i-ti skriveni sloj classifier.add(tf.keras.layers.Dense(units=1, activation=paramsModel['outputLayerActivationFunction']))#izlazni sloj - classifier.compile(loss =paramsModel["lossFunction"] , optimizer = paramsModel['optimizer'] , metrics =paramsModel['metrics']) + classifier.compile(loss =paramsModel["lossFunction"] , optimizer = paramsModel['optimizer'] , metrics =['accuracy','mae','mse']) history=classifier.fit(x_train, y_train, epochs = paramsModel['epochs'],batch_size=paramsModel['batchSize'],callbacks=callback(x_test, y_test,paramsModel['_id'])) hist=history.history @@ -359,7 +373,7 @@ def train(dataset, paramsModel,paramsExperiment,paramsDataset,callback): classifier.add(tf.keras.layers.Dense(units=paramsModel['hiddenLayerNeurons'], activation=paramsModel['hiddenLayerActivationFunctions'][i+1]))#i-ti skriveni sloj classifier.add(tf.keras.layers.Dense(units=1)) - classifier.compile(loss =paramsModel["lossFunction"] , optimizer = paramsModel['optimizer'] , metrics =paramsModel['metrics']) + classifier.compile(loss =paramsModel["lossFunction"] , optimizer = paramsModel['optimizer'] , metrics =['accuracy','mae','mse']) history=classifier.fit(x_train, y_train, epochs = paramsModel['epochs'],batch_size=paramsModel['batchSize'],callbacks=callback(x_test, y_test,paramsModel['_id'])) hist=history.history @@ -529,7 +543,7 @@ def manageH5(dataset,params,h5model): h5model.summary() #ann_viz(h5model, title="My neural network") - h5model.compile(loss=params['lossFunction'], optimizer=params['optimizer'], metrics=params['metrics']) + h5model.compile(loss=params['lossFunction'], optimizer=params['optimizer'], metrics=params['accuracy','']) history=h5model.fit(x2, y2, epochs = params['epochs'],batch_size=params['batchSize']) diff --git a/frontend/package.json b/frontend/package.json index c02a1fb0..7df35a97 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -29,13 +29,14 @@ "@popperjs/core": "^2.10.2", "bootstrap": "^5.1.3", "chart.js": "^3.7.1", + "chartjs-plugin-datalabels": "^0.7.0", "csv-parser": "^3.0.0", "d3-graphviz": "^2.6.1", "jquery": "^3.6.0", "mdb-angular-ui-kit": "^2.0.0", "ng-multiselect-dropdown": "^0.3.8", "ng-uikit-pro-standard": "^1.0.0", - "ng2-charts": "^3.0.8", + "ng2-charts": "^3.0.9", "ng2-search-filter": "^0.5.1", "ngx-cookie-service": "^13.1.2", "popper.js": "^1.16.1", diff --git a/frontend/src/app/_elements/line-chart/line-chart.component.css b/frontend/src/app/_elements/line-chart/line-chart.component.css new file mode 100644 index 00000000..e69de29b diff --git a/frontend/src/app/_elements/line-chart/line-chart.component.html b/frontend/src/app/_elements/line-chart/line-chart.component.html new file mode 100644 index 00000000..8607aac5 --- /dev/null +++ b/frontend/src/app/_elements/line-chart/line-chart.component.html @@ -0,0 +1,9 @@ +
+ + +
\ No newline at end of file diff --git a/frontend/src/app/_elements/line-chart/line-chart.component.spec.ts b/frontend/src/app/_elements/line-chart/line-chart.component.spec.ts new file mode 100644 index 00000000..0c5e7ef5 --- /dev/null +++ b/frontend/src/app/_elements/line-chart/line-chart.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LineChartComponent } from './line-chart.component'; + +describe('LineChartComponent', () => { + let component: LineChartComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ LineChartComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(LineChartComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/_elements/line-chart/line-chart.component.ts b/frontend/src/app/_elements/line-chart/line-chart.component.ts new file mode 100644 index 00000000..7a06ecf5 --- /dev/null +++ b/frontend/src/app/_elements/line-chart/line-chart.component.ts @@ -0,0 +1,57 @@ +import { Component, OnInit } from '@angular/core'; +import { ChartOptions } from 'chart.js'; +import { BaseChartDirective } from 'ng2-charts'; + +@Component({ + selector: 'app-line-chart', + templateUrl: './line-chart.component.html', + styleUrls: ['./line-chart.component.css'] +}) +export class LineChartComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + lineChartData:Array = [ + {data: [65, 59, 80, 81, 56, 55, 40], label: 'Series A'}, + {data: [28, 48, 40, 19, 86, 27, 90], label: 'Series B'}, + {data: [18, 48, 77, 9, 100, 27, 40], label: 'Series C'} + ]; + lineChartLabels: BaseChartDirective["labels"] = ['January', 'February', 'March', 'April', 'May', 'June']; + lineChartOptions = { + responsive: true, + }; + lineChartColors:Array = [ + { // grey + backgroundColor: 'rgba(148,159,177,0.2)', + borderColor: 'rgba(148,159,177,1)', + pointBackgroundColor: 'rgba(148,159,177,1)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgba(148,159,177,0.8)' + }, + { // dark grey + backgroundColor: 'rgba(77,83,96,0.2)', + borderColor: 'rgba(77,83,96,1)', + pointBackgroundColor: 'rgba(77,83,96,1)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgba(77,83,96,1)' + }, + { // grey + backgroundColor: 'rgba(148,159,177,0.2)', + borderColor: 'rgba(148,159,177,1)', + pointBackgroundColor: 'rgba(148,159,177,1)', + pointBorderColor: '#fff', + pointHoverBackgroundColor: '#fff', + pointHoverBorderColor: 'rgba(148,159,177,0.8)' + } + ]; + lineChartLegend = true; + lineChartPlugins = []; + lineChartType = 'line'; + +} + + diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index 948e9a2b..6a95bfe6 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -50,6 +50,7 @@ import { YesNoDialogComponent } from './_modals/yes-no-dialog/yes-no-dialog.comp import { Configuration } from './configuration.service'; import { PointLinechartComponent } from './point-linechart/point-linechart.component'; +import { LineChartComponent } from './_elements/line-chart/line-chart.component'; export function initializeApp(appConfig: Configuration) { return () => appConfig.load(); } @@ -89,7 +90,8 @@ export function initializeApp(appConfig: Configuration) { TrainingComponent, ItemExperimentComponent, YesNoDialogComponent, - PointLinechartComponent + PointLinechartComponent, + LineChartComponent ], imports: [ BrowserModule, -- cgit v1.2.3 From f21885e7cbb68ef444ff9efc27483e2036e26bb0 Mon Sep 17 00:00:00 2001 From: Sonja Galovic Date: Tue, 19 Apr 2022 19:51:54 +0200 Subject: Pravljenje modela: automatski selektovan tip problema kog je i taj eskperiment, zmenjen batch size. Izbaceni neki resetovi u experiment.comp. Backend: u klasu Experiment dodat properti type. --- backend/api/api/Models/Experiment.cs | 1 + frontend/src/app/_data/Model.ts | 4 +- .../_elements/model-load/model-load.component.html | 62 ++++++++-------------- .../_elements/model-load/model-load.component.ts | 18 ++++--- .../src/app/experiment/experiment.component.ts | 4 -- frontend/src/app/training/training.component.html | 18 +++---- frontend/src/app/training/training.component.ts | 13 +++-- 7 files changed, 52 insertions(+), 68 deletions(-) (limited to 'frontend/src/app/_elements') diff --git a/backend/api/api/Models/Experiment.cs b/backend/api/api/Models/Experiment.cs index 6f665c52..f7bec083 100644 --- a/backend/api/api/Models/Experiment.cs +++ b/backend/api/api/Models/Experiment.cs @@ -10,6 +10,7 @@ namespace api.Models public string _id { get; set; } public string name { get; set; } public string description { get; set; } + public string type { get; set; } public List ModelIds { get; set; } public string datasetId { get; set; } public string uploaderId { get; set; } diff --git a/frontend/src/app/_data/Model.ts b/frontend/src/app/_data/Model.ts index b273f56a..7d383584 100644 --- a/frontend/src/app/_data/Model.ts +++ b/frontend/src/app/_data/Model.ts @@ -16,7 +16,7 @@ export default class Model { public inputNeurons: number = 1, public hiddenLayerNeurons: number = 1, public hiddenLayers: number = 1, - public batchSize: number = 5, + public batchSize: number = 4, public hiddenLayerActivationFunctions: string[] = ['sigmoid'], public outputLayerActivationFunction: ActivationFunction = ActivationFunction.Sigmoid, public uploaderId: string = '', @@ -94,7 +94,7 @@ export enum LossFunctionBinaryClassification { HingeLoss = 'hinge_loss', } export enum LossFunctionMultiClassification { - CategoricalCrossEntropy = 'categorical_crossentropy', + //CategoricalCrossEntropy = 'categorical_crossentropy', SparseCategoricalCrossEntropy = 'sparse_categorical_crossentropy', KLDivergence = 'kullback_leibler_divergence', } diff --git a/frontend/src/app/_elements/model-load/model-load.component.html b/frontend/src/app/_elements/model-load/model-load.component.html index dcb35c21..a1e6abd6 100644 --- a/frontend/src/app/_elements/model-load/model-load.component.html +++ b/frontend/src/app/_elements/model-load/model-load.component.html @@ -1,12 +1,10 @@
-

ili

-
@@ -17,8 +15,7 @@
    -
  • +
  • @@ -43,7 +40,7 @@
- +

Parametri treniranja modela:

@@ -54,8 +51,7 @@
-
- +
@@ -96,8 +89,7 @@
- +
@@ -107,8 +99,7 @@
-
- +
- - - {{newModel.batchSize}} - + + +
- +
- +
@@ -148,8 +137,7 @@
- +
@@ -157,8 +145,7 @@
#{{i+1}}
-
- +
-