# 2020-04-07 | IA | DatasetManager ###### tags: `swift` `ia` `gobelins` ## Import ```swift import Foundation ``` ## Class ```swift class DatasetManager { static let instance = DatasetManager() var dataset:[ ([Double],Double) ] = [] init() { } func appendData(data:[Double],expectedResponse:Double) { dataset.append((data,expectedResponse)) } // NEW func appendData(data:[CGPoint],expectedResponse:Double) { var finaldata = DataPreparation(array:data) dataset.append((finaldata.formatArray(n:data.count*2),expectedResponse)) } func getData() -> [ ([Double],Double) ] { return dataset } // NEW func rawDataset(nbValues:Int) -> [ ([Double],Double) ] { for i in 0..<dataset.count { var data = DataPreparation(array:dataset[i].0) dataset[i].0 = data.formatArray(n:nbValues) } return dataset } // CGPoint -> [double] func toRawDataArray(coord:[CGPoint], nbValues:Int) -> [Double] { var data = DataPreparation(array:coord) var finalData = DataPreparation(array:data.formatArray(n:nbValues)) return finalData.formatArray(n:nbValues) } // CGPoint -> [double] -> normaliser le tableau func toNormalizedArray(coord:[CGPoint], nbValues:Int) -> [Double] { var data = DataPreparation(array:coord) var finalData = DataPreparation(array:data.formatArray(n:nbValues)) return finalData.normalize() } // CGPoint -> [double] -> standardiser le tableau func toStandardizedArray(coord:[CGPoint], nbValues:Int) -> [Double] { var data = DataPreparation(array:coord) var finalData = DataPreparation(array:data.formatArray(n:nbValues)) return finalData.standardization() } func normalizedDataset(nbValues:Int) -> [ ([Double],Double) ] { // Normaliser le dataset for i in 0..<dataset.count { var data = DataPreparation(array:dataset[i].0) var finalData = DataPreparation(array:data.formatArray(n:nbValues)) dataset[i].0 = finalData.normalize() } return dataset } func standardizeDataset(nbValues:Int) -> [ ([Double],Double) ] { // Standardiser le dataset for i in 0..<dataset.count { var data = DataPreparation(array:dataset[i].0) var finalData = DataPreparation(array:data.formatArray(n:nbValues)) dataset[i].0 = finalData.standardization() } return dataset } func clearDataset() { dataset = [] } } ``` ## How to use ```swift var pos = [CGPoint(x: 0, y: 1),CGPoint(x: 2, y: 5),CGPoint(x: 4, y: 1),CGPoint(x: 1, y: 0),CGPoint(x: 4, y: 9),CGPoint(x: 0, y: 1),CGPoint(x: 2, y: 5),CGPoint(x: 4, y: 1),CGPoint(x: 1, y: 0),CGPoint(x: 4, y: 9),CGPoint(x: 0, y: 1),CGPoint(x: 2, y: 5),CGPoint(x: 4, y: 1),CGPoint(x: 1, y: 0),CGPoint(x: 4, y: 9),CGPoint(x: 0, y: 1),CGPoint(x: 2, y: 5),CGPoint(x: 4, y: 1),CGPoint(x: 1, y: 0),CGPoint(x: 4, y: 9)] // Transformer des tableaux de CGPoint en tableaux de Double var array1 = DatasetManager.instance.toRawDataArray(coord:pos, nbValues:5) // Transformer des tableaux de CGPoint en tableaux de Double ET le normaliser var array2 = DatasetManager.instance.toNormalizedArray(coord:pos, nbValues:10) // Transformer des tableaux de CGPoint en tableaux de Double ET le standardiser var array3 = DatasetManager.instance.toStandardizedArray(coord:pos, nbValues:10) // ajouter des données à partir de tableaux de Double DatasetManager.instance.appendData(data:array1,expectedResponse:1) DatasetManager.instance.appendData(data:array2,expectedResponse:0) DatasetManager.instance.appendData(data:array3,expectedResponse:1) // ajouter des données à partir de tableaux de CGPoint DatasetManager.instance.appendData(data:pos,expectedResponse:1) // Récupérer les tableaux print(DatasetManager.instance.getData()) // Récupérer les tableaux en leur donnant la même taille print(DatasetManager.instance.rawDataset(nbValues:4)) // normaliser le dataset print(DatasetManager.instance.normalizedDataset(nbValues:3)) // standardiser le dataset print(DatasetManager.instance.standardizeDataset(nbValues:3)) // vider le dataset DatasetManager.instance.clearDataset() ``` ## Result ```console [([0.0, 1.0, 2.0, 5.0, 4.0], 1.0), ([0.0, 0.1111111111111111, 0.2222222222222222, 0.5555555555555556, 0.4444444444444444, 0.1111111111111111, 0.1111111111111111, 0.0, 0.4444444444444444, 1.0], 0.0), ([-1.375, -0.6527299120066193, -0.1250000000000001, 0.5340517461872339, 1.1249999999999998, -0.6527299120066193, -0.7500000000000001, -0.9494253265550827, 1.1249999999999998, 1.7208334043810871], 1.0), ([0.0, 1.0, 2.0, 5.0, 4.0, 1.0, 1.0, 0.0, 4.0, 9.0, 0.0, 1.0, 2.0, 5.0, 4.0, 1.0, 1.0, 0.0, 4.0, 9.0, 0.0, 1.0, 2.0, 5.0, 4.0, 1.0, 1.0, 0.0, 4.0, 9.0, 0.0, 1.0, 2.0, 5.0, 4.0, 1.0, 1.0, 0.0, 4.0, 9.0], 1.0)] [([0.0, 1.0, 2.0, 5.0], 1.0), ([0.0, 0.1111111111111111, 0.2222222222222222, 0.5555555555555556], 0.0), ([-1.375, -0.6527299120066193, -0.1250000000000001, 0.5340517461872339], 1.0), ([0.0, 1.0, 2.0, 5.0], 1.0)] [([0.0, 0.5, 1.0], 1.0), ([0.0, 0.5, 1.0], 0.0), ([0.0, 0.5778160703947045, 1.0], 1.0), ([0.0, 0.5, 1.0], 1.0)] [([-1.0954451150103321, 1.2247448713915892, 0.5477225575051662], 1.0), ([-1.0954451150103321, 1.2247448713915892, 0.5477225575051662], 0.0), ([-1.0954451150103321, 1.224744871391589, 0.5477225575051662], 1.0), ([-1.0954451150103321, 1.2247448713915892, 0.5477225575051662], 1.0)] ```