doe

데이터 증설

  1. 완전 요인 실험 Full Factorial Design
# 필요한 라이브러리 임포트 
import numpy as np 
import pandas as pd 
from pyDOE2 import fullfact 
# 실험 변수와 각 변수의 수준 정의 # 예를 들어 2개의 변수 A, B가 각각 3개와 2개의 수준을 가진다고 가정 
levels = [3, 2]
# A 변수는 3개의 수준, B 변수는 2개의 수준 
# 완전 요인 실험 설계 생성 
design = fullfact(levels) 
# 설계 결과 확인 (모든 요인 조합 출력) 
df = pd.DataFrame(design, columns=['A', 'B']) 
# 각 수준을 1부터 시작하도록 변환 (pyDOE2의 기본 값은 0부터 시작) 
df['A'] = df['A'] + 1 
df['B'] = df['B'] + 1 
# 결과 출력 
print(df)
  1. 라틴 방격법 (Latin Hypercube Sampling)
from pyDOE2 import lhs

# 변수 개수와 샘플 개수 정의
num_variables = 3  # 변수가 3개
num_samples = 10   # 샘플이 10개

# 라틴 방격법을 사용한 설계 생성
design = lhs(num_variables, samples=num_samples)

# 설계 결과를 pandas 데이터프레임으로 변환하여 보기 쉽게 출력
df = pd.DataFrame(design, columns=['Variable 1', 'Variable 2', 'Variable 3'])

# 결과 출력
print(df)

  1. DOE를 사용한 파라미터 스윕(Parameters Sweep)
  2. 인공 데이터 생성 (Synthetic Data Generation)
  3. DOE 기법을 이용한 데이터셋 증대(Augmentation)

DOE로 데이터 생성과 모델 학습 log정보로 예측 시스템

import pandas as pd
from sklearn.ensemble import RandomForestClassifier

# DOE 데이터와 로그 데이터 결합
data = {
    'doe_parameter1': [0.1, 0.2, 0.15, 0.3],  # DOE 파라미터 1
    'doe_parameter2': [10, 12, 11, 14],      # DOE 파라미터 2
    'training_loss': [0.05, 0.07, 0.04, 0.1],  # 학습 손실 값
    'training_time': [300, 320, 310, 330],    # 학습 시간 (초)
    'error_occurred': [0, 1, 0, 1]            # 에러 발생 여부 (1: 에러 발생, 0: 정상)
}

df_logs = pd.DataFrame(data)

# 독립 변수 (DOE 파라미터와 학습 로그)와 종속 변수 (에러 발생 여부)를 정의
X = df_logs[['doe_parameter1', 'doe_parameter2', 'training_loss', 'training_time']]
y = df_logs['error_occurred']

# 에러 발생을 예측하는 분류 모델 (랜덤 포레스트)
error_prediction_model = RandomForestClassifier()

# 모델 학습
error_prediction_model.fit(X, y)

# 새로운 DOE 데이터 및 학습 로그가 들어왔을 때 에러 발생 여부 예측
new_data = [[0.18, 13, 0.06, 315]]  # 새로운 학습 로그 데이터
predicted_error = error_prediction_model.predict(new_data)

if predicted_error[0] == 1:
    print("Warning: An error is likely to occur with the current settings.")
else:
    print("No issues detected.")