품질관리(QAQC) 데이터 부트캠프(본캠프)

본캠프_12주차(화)_TIL(실전 프로젝트)

Wat_zy 2025. 12. 2. 08:53

✅ 오늘 한 것

실전 프로젝트(제약)


✏️ 오늘 배운 점

전처리된 데이터프레임

데이터 컬럼명

df['Time (h)'].nunique(): 1450가지

운전 변수 df['Aeration rate(Fg:L/h)'].unique() : 20, 30, 42, 55, 60, 65, 75 -- 7가지

운전 변수 df['Agitator RPM(RPM:RPM)'].unique(): 100 -- 1가지 ; 모두 동일하기에 버릴 예정

df['Sugar feed rate(Fs:L/h)'].unique(): 2,   8,  15,  20,  30,  37,  43,  45,  47,  51,  57,  60,  61, 65,  72,  75,  76,  80,  84,  90, 105, 116, 120, 135, 150 -- 25가지

df['Acid flow rate(Fa:L/h)'].unique(): 1353가지

df['Base flow rate(Fb:L/h)'].unique(): 67206가지

df['Heating/cooling water flow rate(Fc:L/h)'].unique(): 77380가지

df['Heating water flow rate(Fh:L/h)'].unique(): 54534가지

df['Water for injection/dilution(Fw:L/h)'].unique(): 0, 100, 150, 250, 400, 500 -- 6가지

df['Air head pressure(pressure:bar)'].unique(): 0.6, 0.7, 0.8, 0.9, 1.0, 1.1 - 6가지

df['Dumped broth flow(Fremoved:L/h)'].unique(): -4000, 0 - 2가지

주요 상태 변수 df['Substrate concentration(S:g/L)'].unique(): 64531가지

운전 변수 df['Dissolved oxygen concentration(DO2:mg/L)'].unique(): 11087가지

목표 변수 df['Penicillin concentration(P:g/L)'].unique(): 56258가지

주요 상태 변수 df['Vessel Volume(V:L)'].unique(): 28296가지

df['Vessel Weight(Wt:Kg)'].unique(): 31711가지

운전 변수 df['pH(pH:pH)'].unique(): 3990가지

운전 변수 df['Temperature(T:K)'].unique(): 393가지

df['Generated heat(Q:kJ)'].unique(): 51059가지

df['carbon dioxide percent in off-gas(CO2outgas:%)'].unique(): 28416가지

df['PAA flow(Fpaa:PAA flow (L/h))'].unique(): 22931가지

df['PAA concentration offline(PAA_offline:PAA (g L^{-1}))'].unique(): 1563가지

df['Oil flow(Foil:L/hr)'].unique(): 22, 23, 29, 30, 31, 32, 33, 34, 35 -- 9가지

df[' NH_3 concentration off-line(NH3_offline:NH3 (g L^{-1})) '].unique(): 1759가지

df['Oxygen Uptake Rate(OUR:(g min^{-1}))'].unique(): 35065가지

df['Oxygen in percent in off-gas(O2:O2  (%))'].unique(): 3095가지

df['Offline Penicillin concentration(P_offline:P(g L^{-1}))'].unique(): 1919가지

주요 상태 변수 df['Offline Biomass concentration(X_offline:X(g L^{-1}))'].unique(): 1934가지

df['Carbon evolution rate(CER:g/h)'].unique(): 35059가지

df['Ammonia shots(NH3_shots:kgs)'].unique(): 0 -- 1가지; 모두 동일하기에 버릴 예정 

df['Viscosity(Viscosity_offline:centPoise)'].unique(): 1976가지

df['Fault reference(Fault_ref:Fault ref)'].unique(): 0, 1 -- 2가지

df['0 - Recipe driven 1 - Operator controlled(Control_ref:Control ref)'].unique(): 0, 1-- 2가지

df['Batch_ID'].unique(): 1~100 -- 100가지

df['Batch ref'].unique(): 1~100 -- 100가지 

df['Penicllin_harvested_during_batch(kg)'].unique(): 100가지

df['Penicllin_harvested_end_of_batch (kg)'].unique(): 100가지

df['Penicllin_yield_total (kg)'].unique(): 100가지

df['Fault ref(0-NoFault 1-Fault)'].unique(): 0, 1 -- 2가지

 

Time : Batch 진행 시간

Aeration rate: 공급되는 공기량

Agitator RPM: 교반기 회전 속도

Sugar feed rate: 탄소원 공급 유량

Acid flow rate: 산 공급량

Base flow rate: 염기 공급량

Heating water flow: 온수 공급 유량

Water for injection/dilution: 멸균수 공급량

Air head pressure: 발효조 상부의 공기 압력

Dumped broth flow: 배양액 제거 유량

Dissolved oxygen: 용존 산소 농도

pH: 배양의 pH 농도

Temperature: 발효조 내 온도

Oil flow: 발효조에 공급하는 소포제 유량

PAA flow: PAA 공급 유량

Fault reference: 공정이 정상인지/고장인지 

Control reference: 제어가 Recipe 기반인지/Operator 기반인지

Substrate concentration: 용해된 기질 농도

Vessel Volume: 발효조 내부 배양액의 전체 부피

Vessel Weight: 배양액+장치+기체 등 시스템 전체 중량 

Generated heat: 미생물 대사에 의해 생성되는 열량Biomass concentration offline: 생물량(세포량)의 오프라인 측정값Oxygen Uptake Rate(OUR): 산소 소비 속도Carbon Evolution Rate(CER): CO2 생성 속도Oxygen percent in off-gas: 배출가스의 잔여 산소 농도

CO2 percent in off-gas: 배출가스의 잔여 CO2 비율

Viscosity: 점도

Penicillin concentration: 페니실린의 농도

NH3 concentration offline: Lab에서 측정한 암모니아 농도

Batch ref: 배치번호(1~100)

Fault ref: Fault 상태(0=정상, 1=고장)

 

Time (h), Aeration rate(Fg:L/h), Substrate concentration(S:g/L), Dissolved oxygen concentration(DO2:mg/L), Penicillin concentration(P:g/L), Vessel Volume(V:L), pH(pH:pH), Temperature(T:K), Offline Biomass concentration(X_offline:X(g L^{-1})), Batch ref 컬럼을 가지고 새로운 변수를 제작하여 위의 컬럼으로만 데이터 분석을 진행하게 되었다.

 

그러나 Offline Biomass concentration(X_offline:X(g L^{-1}))는 NaN이 아닌 값이 약 1.81%로 직접적으로 X 값으로 사용하기에 부족함이 있다고 판단하여 Biomass를 대신할 수 있는 도메인적인 측면에서 확인하여 사용할 수 있을 값들로 대체하여 컬럼을 활용하고자 하였다. 

 

그렇기에 1차적으로 Penicillin과 상관계수를 보고 최소 절대값이 0.30을 넘는 값을 확인하고 도메인적인 측면으로 봤을 때 필요하다고 생각되는 컬럼들을 가져가고자 한다.

Time (h), CER, Aeration rate(Fg), Vessel Volume(V), CO2outgas, Fc (cooling water flow), Fs, DO2


✏️ 오늘의 질문

1. 상관계수만으로 중요한 컬럼을 선정하면 왜 안 되는가?

상관계수는 단순히 선형 관계만을 측정하기에 비선형 관계를 놓칠 수 있다.

 

2. 상관계수가 높다고 해당 변수가 항상 유용한가?

아니다, 상관계수가 높으면 다중공선성 위험도 함께 높기에 변수 간 다중공선성 확인이 필요하다.


📌추가로 해야 할 점

실전 프로젝트