2025/05 11

[머신러닝 분석] 로지스틱 회귀로 연체자 예측해보기

이번 글에서는 지난번 전처리 및 EDA를 거쳐 준비된 데이터를 기반으로,로지스틱 회귀(Logistic Regression) 모델을 활용해 신용 연체 가능성을 예측해본 과정을 정리합니다. from sklearn.model_selection import train_test_split# 타겟 분리X = train_df.drop(columns=['SeriousDlqin2yrs', 'Unnamed: 0']) # ID 컬럼도 제거y = train_df['SeriousDlqin2yrs']# 학습용 / 검증용 데이터 분리X_train, X_val, y_train, y_val = train_test_split( X, y, test_size=0.2, random_state=42, stratify=y)# 1. 스케일..

카테고리 없음 2025.05.25

[탐색적 데이터 분석] 연체와 관련된 변수는 무엇일까? – Give Me Some Credit 프로젝트

🎯 분석 목표연체 여부(SeriousDlqin2yrs)와 변수들 간의 관계를 시각적으로 탐색어떤 변수들이 연체 가능성에 영향을 줄 수 있을지 감으로 파악추후 모델링에 사용할 중요한 변수 후보군을 정리📊 1. 타겟 변수 분포 확인먼저, 우리가 예측하고자 하는 연체 여부(0 또는 1) 의 분포를 확인했습니다.# 연체한 사람 vs 안 한 사람 비율은 어떻게 될까?import seaborn as snsimport matplotlib.pyplot as pltsns.countplot(x='SeriousDlqin2yrs', data=train_df)plt.title("Target Distribution (0: 정상, 1: 연체)")plt.show()🔍 대부분의 샘플이 0 → 연체하지 않은 사람→ 데이터 불균형 ..

카테고리 없음 2025.05.15

[데이터 전처리] 이상치와 결측치 탐지 및 처리 – 캐글 Give Me Some Credit 프로젝트

데이터 분석 프로젝트에서 가장 중요한 첫 단계는 데이터 전처리입니다.이번 글에서는 Kaggle의 금융 데이터셋을 기반으로, 이상치와 결측치를 탐지하고 처리하는 전 과정을 소개합니다.💡 왜 전처리를 할까?현실 세계의 데이터는 항상 지저분합니다.누락된 값(결측치)말이 안 되는 수치(이상치)잘못된 데이터 타입이런 문제들을 그대로 둔 채 분석을 진행하면 모델 성능이 떨어지고, 왜곡된 인사이트가 도출될 수 있습니다.🔍 1. 결측치(Missing Values) 탐지import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as snssns.set(style="whitegrid")train_df = pd.read_csv('c..

카테고리 없음 2025.05.15

☁ EC2에 스프링 부트 배포하면서 피땀 흘린 썰 (2)

― Redis 오류, 그리고 Security 지옥 ―🔴 4. Redis 연결 오류 (UnknownHostException: redis)Spring Boot는 잘 떴는데, 갑자기 이런 에러가 터졌다:java.net.UnknownHostException: redis 처음엔 “레디스 안 켜졌나?” 싶었는데, Redis는 잘 실행 중이었다.문제는 Docker 네트워크였다.✅ 이유: Redis를 docker-compose로 안 띄웠기 때문내가 백엔드 컨테이너만 먼저 띄워놓고 Redis는 따로 설치해서 돌렸었는데,그 상태에서 .env에 이렇게 설정해놨었다:# envspring.data.redis.host=redis → 당연히 "redis"라는 이름은 Docker 내부 네트워크에서만 인식 가능하고,그 이름을 호스트..

카테고리 없음 2025.05.12

☁ EC2에 스프링 부트 배포하면서 피땀 흘린 썰 (1)

― 진짜 삽질기록.zip ―사이드 프로젝트를 마무리하면서, "배포까지 해봐야 진짜 끝이지" 싶은 마음에AWS EC2에 Spring Boot 앱을 직접 Docker로 띄워봤다.물론 당연히 처음부터 막혔다. 그 과정을 적어보려고 한다.🛠️ 1. 운영처럼 배포해보고 싶었다기획부터 개발까지 다 한 프로젝트가 있었고,이걸 단순히 로컬에서만 돌리는 게 아쉬워서"운영 환경처럼 한번 제대로 띄워보자" 싶었다.백엔드는 Spring BootDB는 MySQL (초기엔 직접 설치했음)캐시는 Redis배포는 Docker + EC2실제로 서비스 돌아가는 구조랑 최대한 가깝게 구성해보고 싶었다.🌱 2. EC2부터 시작했는데, 처음부터 멘붕✅ 기본 VPC가 없다고 했다처음 EC2 인스턴스를 만들려니까,"이 리전에서는 기본 VPC..

카테고리 없음 2025.05.12

🐛 GitHub Actions에서 Spring 테스트는 통과했는데, Docker가 실패했다고요?

서론MoneyTalk 프로젝트에 CI/CD를 붙이던 어느 날, 테스트는 잘 도는데 갑자기 Docker 빌드에서 에러가 팡팡 터졌다.분명 로컬에서는 되던 거였는데 말이지...🎯 1. 테스트는 왜 CI에서만 실패했을까?Could not resolve placeholder 'spring.data.redis.host' 이 에러는 Spring이 ${spring.data.redis.host} 같은 설정값을 못 찾았을 때 나오는 고전적인 에러다.로컬에서는 잘만 돌아갔는데, GitHub Actions에서는 줄줄이 테스트가 터졌다.📌 원인은 단순했다테스트 전용 설정 파일인 application-test.yml이 .gitignore에 막혀서 Git에 아예 포함되지 않았던 것!결국 CI 환경에서는 이 설정 파일이 존재하..

카테고리 없음 2025.05.12

🧪 SpringBootTest에서 ClientRegistrationRepository 에러 해결기

“테스트 돌리는데 갑자기 ApplicationContext가 안 뜬다?”요즘 통합 테스트를 정리하면서 @SpringBootTest 기반의 테스트를 하나씩 만들고 있었는데, 갑자기 이런 에러를 만났다.No qualifying bean of type 'org.springframework.security.oauth2.client.registration.ClientRegistrationRepository'ApplicationContext 자체가 죽어버린다. 로그 맨 아래에 IllegalStateException이 나오고,“ApplicationContext failure threshold exceeded” 같은 문구까지 뜨면 거의 시험지 찢을 타이밍이다.🤔 원인문제의 근원은 SecurityConfig에 있는 h..

카테고리 없음 2025.05.12

💥 Docker에서 Redis 연결 안 될 때? 내 삽질 기록 정리 🐳🔥

📌 문제 상황Spring Boot + Redis + Docker Compose 환경에서 프로젝트를 올리는데,애플리케이션이 갑자기 종료되고 아래와 같은 에러를 뿜었다.Connection refused: localhost/127.0.0.1:6379 Unable to connect to Redis분명 REDIS_HOST=redis로 설정했는데 왜 자꾸 localhost:6379로 연결하려는 거야...? 🔍 문제 원인 파헤치기1. localhost로 연결되는 이유?Redis를 Docker 컨테이너로 띄우면 localhost가 아닌 컨테이너 이름(redis)으로 접근해야 한다.그런데도 Spring이 계속 localhost를 사용한다면?→ 환경 변수 적용이 제대로 안 됐거나, 소스 코드나 설정 어딘가에 하드코딩..

카테고리 없음 2025.05.12

[Spring Boot 테스트] Gradle에서 필터 중복 + Mockito 설정 충돌로 인한 테스트 실패 해결기

📝 서론Spring Security + JWT 기반 인증 구조를 가진 프로젝트에서 MockMvc를 활용한 단위 테스트를 작성하던 중두 가지 독립적인 테스트가 서로 간섭하면서 테스트가 실패하는 현상을 겪었다.Gradle CLI 환경에서만 발생하며, IDE에서는 정상 작동하는 케이스였다. @Nested @DisplayName("회원 탈퇴 테스트") class DeleteUserTest { @Test @DisplayName("회원 탈퇴 성공 (JWT 인증)") void deleteUserSuccess() throws Exception { // given Long userId = 1L; String email = "user@example.com"; String toke..

카테고리 없음 2025.05.08

[Spring Boot] MockMvc 테스트 중 401 오류? 알고 보니 JwtAuthenticationFilter가 작동하지 않았다

📝 서론JWT 기반 인증을 적용한 Spring Boot 프로젝트에서, 사용자 인증 관련 단위 테스트를 작성하던 중 예상치 못한 오류를 만났다.java.lang.AssertionError: Status expected: but was:정상 로그인 후 사용자 정보를 조회하는 API에서 200 OK를 기대했지만, 실제로는 401 Unauthorized가 반환되었다.MockMvc를 통한 요청이 분명 Authorization 헤더에 JWT를 포함하고 있었음에도, 필터를 거치지 않아 인증에 실패한 것이었다.🧩 문제 상황 요약// 테스트 코드 일부 mockMvc.perform(get("/api/users/me") .header("Authorization", "Bearer " + token) .with(csrf()..

카테고리 없음 2025.05.08