Skip to content

Commit

Permalink
feat : ml training data
Browse files Browse the repository at this point in the history
  • Loading branch information
YGwan committed Aug 15, 2023
1 parent c61304a commit 2fc39b0
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 2 deletions.
3 changes: 1 addition & 2 deletions src/main/java/se/ton/t210/utils/data/DummyData.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public void create() {
}
}

private List<Member> createMembers(int number) {
private void createMembers(int number) {
members = new ArrayList<>();
for (var applicationType : ApplicationType.values()) {
for (int i = 0; i < number; i++) {
Expand All @@ -68,7 +68,6 @@ private List<Member> createMembers(int number) {
}
}
memberRepository.saveAll(members);
return members;
}

private Map<ApplicationType, List<EvaluationItem>> createEvaluationItemTable() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package se.ton.t210.utils.data.initData;

public interface CsvLineStrategy {

String retrieveNewLine();
}
49 changes: 49 additions & 0 deletions src/main/java/se/ton/t210/utils/data/initData/InitDataCSV.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package se.ton.t210.utils.data.initData;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class InitDataCSV {

private static final int UNIT_COUNT = 10_000_000;

private final CsvLineStrategy csvLineStrategy;
private final String fileName;
private final int dataCount;
private String initialLine;

public InitDataCSV(CsvLineStrategy csvLineStrategy, String fileName, int dataCount) {
this.csvLineStrategy = csvLineStrategy;
this.fileName = fileName;
this.dataCount = dataCount;
}

public void generate() throws IOException {
generate(false);
}

public void generate(boolean appendEnable) throws IOException {
try (
final var bw = new BufferedWriter(new FileWriter(fileName, appendEnable))
) {
if (initialLine != null) {
bw.append(initialLine);
}
for (int i = 0; i < dataCount / UNIT_COUNT; i++) {
for (int j = 0; j < UNIT_COUNT; j++) {
bw.append("\n").append(csvLineStrategy.retrieveNewLine());
}
}
for (int i = 0; i < dataCount % UNIT_COUNT; i++) {
bw.append("\n").append(csvLineStrategy.retrieveNewLine());
}
}
}

public void setInitialLine(String line) {
if (line != null) {
this.initialLine = line;
}
}
}
13 changes: 13 additions & 0 deletions src/main/java/se/ton/t210/utils/data/initData/InitDataMain.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package se.ton.t210.utils.data.initData;

import java.io.IOException;

public class InitDataMain {

public static void main(String[] args) throws IOException {
var csvLineStrategy = new MLTrainingCsvLine();
var initDataCSV = new InitDataCSV(csvLineStrategy, "ml_training_000_001.csv", 10_000);
initDataCSV.setInitialLine("id,applicationType,score,month");
initDataCSV.generate();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package se.ton.t210.utils.data.initData;

import se.ton.t210.domain.type.ApplicationType;

import java.util.Random;

// ML
// id,applicationType,score,month
public class MLTrainingCsvLine implements CsvLineStrategy {

private static final Random RANDOM = new Random();
private Long id = 0L;

@Override
public String retrieveNewLine() {
id++;
return String.join(",",
String.valueOf(id),
randomApplicationTypeStandardName(),
randomNum(5, 50),
randomNum(1, 12)
);
}

private String randomNum(int min, int max) {
return String.valueOf(RANDOM.nextInt(max - min + 1) + min);
}

private String randomApplicationTypeStandardName() {
ApplicationType[] applicationTypes = ApplicationType.values();
int randomNum = RANDOM.nextInt(applicationTypes.length);
return applicationTypes[randomNum].getStandardName();
}
}

0 comments on commit 2fc39b0

Please sign in to comment.