카테고리 없음

심화프로젝트 5일차 - 자료정리 및 ppt 작성

iron-min 2025. 11. 13. 20:35

1. PPT 작성

제가 했던 부분들에 대해 조원분들과 함께 발표자료를 만들었습니다.

 

 

1) 가설 설정 및 시각화 부분

 

 

2) 유의검정 부분

 

3) 로지스틱 회귀

 

여기까지가 제가 한부분입니다.

 

참고로 로지스틱회귀 결론 부분에서 조원들과 만든 ppt 디자인에 맞추기 위해 추가로 코딩을 해야했습니다.

 

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from matplotlib.patches import Patch # 범례 생성을 위해 import

# --- 1. 데이터 정의 (Pastry 회귀 계수 전체) ---
data = {
    'Variable': [
        'Orientation_Index', 'Edges_Y_Index', 'Maximum_of_Luminosity', 'Length_of_Conveyer',
        'Y_Center', 'Edges_X_Index', 'X_Center', 'Steel_Plate_Thickness', 'Luminosity_Index',
        'Outside_X_Index', 'Pixels_Areas', 'SigmoidOfAreas', 'LogOfAreas',
        'Square_Index', 'Empty_Index', 'Minimum_of_Luminosity'
    ],
    'Coefficient': [
        5.765155, 3.597749, 2.604717, 1.745349,
        0.984650, 0.689431, 0.499017, -0.000202, -0.282727,
        -0.573524, -0.715986, -1.140740, -2.369225,
        -4.264417, -5.294367, -5.317620
    ]
}
df_coef = pd.DataFrame(data)

# --- 2. 영향력 높은 상위 3개 요인 추출 ---

# 계수 값의 절댓값 기준으로 내림차순 정렬
df_coef_sorted_abs = df_coef.iloc[df_coef['Coefficient'].abs().argsort()[::-1]]

# 상위 3개 요인 추출
df_top3 = df_coef_sorted_abs.head(3).copy()

# PPT 스타일에 맞는 부드러운 색상 지정
# 양의 영향 (빨강 계열), 음의 영향 (파랑 계열)
df_top3['Color'] = ['#E57373' if c > 0 else '#64B5F6' for c in df_top3['Coefficient']]

# 수평 막대 그래프는 아래에서 위로 그려집니다.
# 가장 영향력 높은 변수(Orientation_Index)를 맨 위에 표시하기 위해 데이터프레임 순서를 뒤집습니다.
df_top3_plot = df_top3.iloc[::-1]

# --- 3. 폰트 설정 ---
font_name = 'Malgun Gothic'
try:
    plt.rcParams['font.family'] = font_name
    plt.rcParams['axes.unicode_minus'] = False
except Exception:
    print(f"경고: 폰트 '{font_name}'를 찾을 수 없습니다. 기본 폰트로 출력됩니다.")


# --- 4. 시각화 (PPT 디자인 스타일 적용) ---
fig, ax = plt.subplots(figsize=(10, 6)) # Figure와 Axes 객체를 명시적으로 생성

# 수평 막대 그래프 생성 (barh)
bars = ax.barh(df_top3_plot['Variable'], df_top3_plot['Coefficient'],
               color=df_top3_plot['Color'], alpha=0.9, height=0.6)

# --- 그래프 제목 및 레이블 ---
ax.set_title('Pastry 결함 모델: 영향력 높은 상위 3개 변수',
             fontsize=16, fontweight='bold', loc='left', pad=20)
ax.set_xlabel('회귀 계수 값 (영향력)', fontsize=12, labelpad=10)
ax.tick_params(axis='y', labelsize=12, length=0) # Y축 변수명 글꼴
ax.tick_params(axis='x', labelsize=10)

# --- PPT 스타일로 축 정리 ---
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_visible(False) # Y축 라인 제거
ax.spines['bottom'].set_color('#B0B0B0') # 하단 X축 라인 색상 연하게

# --- 그리드 및 0점 기준선 ---
ax.grid(axis='x', linestyle='--', alpha=0.7, color='#CCCCCC')
ax.set_axisbelow(True) # 그리드를 막대 뒤로 보냄
ax.axvline(0, color='black', linewidth=0.8, linestyle='--') # 0점 기준선


# --- 범례 추가 (색상 의미 설명) ---
legend_elements = [
    Patch(facecolor='#E57373', label='양의 영향 (결함 증가)'),
    Patch(facecolor='#64B5F6', label='음의 영향 (결함 감소)')
]
ax.legend(handles=legend_elements, loc='lower right', frameon=False, fontsize=11)

# 레이아웃 최적화
plt.tight_layout(pad=2.0)

plt.show()

print("\n--- 상위 3개 요인 상세 정보 ---")
print(df_top3[['Variable', 'Coefficient']])

 

 

느낀점

조원이 디자인한 ppt 양식에 맞추는 것도 꽤나 힘든거란걸 알았습니다.(ppt 디자인이 워낙 좋아서....)

잘된 ppt 디자인에 맞추기 위해 저또한 잘 표현하기위해 노력을 해야했습니다.

 

그리고 코딩을 정말 많이하고 분석했는데 발표자료를 만들고보니 3장밖에 안되더군요... 데이터 분석에는 어마어마한 시간이 들었는데 정말 필요한것만 빼내니 이렇게나 줄어든다는것을 알았습니다.

 

그래도 수고해준 팀원들 덕분에 무사히 발표자료까지 완성할 수 있었던것 같습니다.

 

철판제조공정데이터통계분석및머신러닝모델설계_rev4.pptx
5.48MB