전체 글

공부한 걸 정리하고 공유하며 틀린 부분을 함께 고쳐나가는 블로그입니다.
📌 문제 📌 풀이 연속인 단어라 해서 알파벳이 연속인걸 말하는건가...? 했는데 잘 읽어보니 그냥 같은 알파벳이 연속으로 나오는게 아니라 몇단어 뒤에 다시나올 경우 그룹단어가 아니라고 접근하면 될거같더군요. 계속 틀리길래 찾아보니까 오탈자 발견.... 단어의 각 알파벳마다 만약 바로 다음 알파벳과 같다면 그룹 단어 조건에 충족하니까 패스 이외 다음 알파벳을 제외하고 뒤에 또 다시 해당 알파벳이 나온다면 그룹 단어가 아니기 때문에 총 단어수에서 빼기 1 times = int(input()) N = times for i in range(times): word = input() for j in range(0, len(word)-1): if word[j] == word[j+1]: pass elif word[j]..
📌 문제 나의 풀이 문제를 보는데 사실 의아했습니다. 정수의 개수를 왜 입력으로 받지..? 굳이 필요없을 것 같은데.. 라는 의문으로 우선은 정수의 개수를 사용하는 풀이를 만들어 보고자 했습니다. # 10818번 N = int(input()) L = list(input().split()) for i in range(N): L[i] = int(L[i]) print(min(L), max(L)) 이렇게 하면 풀수는 있으나 아래 처럼 간단하게 함수로 가능하죠. 리스트로 우선 받고, 문자열은 for문에 맞추어 하나하나 int로 바꾸어 주는 겁니다. ➕ 더 좋은 풀이 그냥 아래와 같이 3줄안에 가능합니다. # 빠른 풀이 N = int(input()) I = list(map(int, input().split())) ..
📌문제 나의 풀이 파이썬을 한지 좀 되서.. R이랑 코드가 헷갈려서 좀 걸렸지만 해결은 했습니다! # 2753 윤년 A = input() x = int(A) if x % 400 == 0: print(1) elif x % 4 == 0 and x % 100 != 0: print(1) else: print(0) 이렇게 풀었는데 아래처럼 한줄로도 해결가능하더군요. # 2753 윤년 ver2 A = input() x = int(A) if x % 4 == 0 and x % 100 != 0 or x % 400 == 0: print(1) else: print(0) ➕더 좋은 풀이 : 삼향연산자 더 좋은 풀이가 있나 하던중에 삼향 연산자라는 걸 찾았습니다. 분명 예전에 배운 기억이 있는데 하도 오래되어서 기억이 안나더라..
📌 문제 📌 나의 풀이 문제를 푸는데 어려움은 없었으나, 마지막 print()부분에서 좀 더 효율적으로 값을 내는 법이 있을까 싶더군요. # 10430번 A, B, C = map(int, input().split()) print((A+B)%C) print(((A%C)+(B%C))%C) print((A*B)%C) print(((A%C)*(B%C))%C) ➕ 더 좋은 풀이 : sep = '\n'사용 문제를 풀어보다가 print를 저렇게 나열하는 거 보다 분명 좋은 방법이 있을 텐데.. 고민하다 그냥 해봤는데요 역시 찾아보니 좋은 풀이가 있더라구요. 바로 \n 사용하기. 기본적으로 줄바꿈이 \n입니다. 그러니까 엔터를 표현한 값이죠. 이것을 print()에 넣어주면 되더라구요! A, B, C = map(int..
우리가 예측을 할 때, 예측력이 높은 것도 중요하지만 주제와 목적에 따라 모델의 내부 메커니즘을 이해하는 것도 중요할 수 있습니다. 모델이 어떻게 특정 변수에 의존하는지, 즉 특정 input과 output간의 관계가 어떻게 이루어져 있는지 이해하는 것이 모델을 해석하는 데 중요할 수 있가다는 것입니다. 이러한 맥락에서 부분 의존성 플롯(PD)와 개별 조건부 평균 플롯(ICE)은 중요한 역할을 할 수 있습니다. 부분 의존성 플롯(PD)는 데이터 세트 내의 하나 또는 두 개의 특성과 예측 결과 사이의 관계를 시각화 합니다. 특정 특성의 다양한 값들이 예측 결과에 어떻게 영향을 미치는지 보여줌으로써, 모델이 특성을 어떻게 해석하는지에 대한 통찰력을 제공합니다. 반면, 개별 조건부 평균 플롯(ICE)는 각 관측..
자주 보이는 성능 지표는 아니지만 분류 목적에 있어서 가끔 사용되는 plot중 하나로 calibration plot이 있다. Calibration plot(캘리브레이션 플롯)은 머신러닝 모델의 예측 정확도와 신뢰도를 시각적으로 평가하는데 사용되는 도구이다. 모델이 예측한 확률과 실제 결과 간의 일치 정도를 평가함으로써, 모델의 성능을 직관적으로 이해할 수 있게 해준다. 특히, 분류 문제에서 모델의 예측 확률이 실제 발생 확률과 얼마나 잘 맞는지를 검증함으로써, 모델의 신뢰성을 검증 할 수 있다. 📌 Calibration plot 우선 우리가 적합한 모델이 있다고 가정합시다. 그렇다면 이 모델로 인하여 나온 데스트 세트의 각 샘플에 대한 예측 확률이 계산되었을 것이다.(분류니까 각 클래스에 속할 확률이라고..
앞서 불균형 데이터 처리의 중요성과 간단한 방법들에 대해 알아보았습니다. 임계값(threshold)를 조정하는 법, 그리고 랜덤 오버샘플링(Random Oversampling), 랜덤 언더샘플링(Random Undersampling)을 보았습니다. 링크 : 임계값 조정법, ROS/RUS 이번엔 또 다른 접근법으로 소수 클래스의 샘플을 증가시키는 SMOTE(Synthetic Minority Over sampling Technique), ADASYN(Adaptive Synthetic Sampling)에 대해 알아보겠습니다. 간단하게, SMOTE는 소수 클래스의 샘플을 인위적으로 생성하여 데이터 세트의 균형을 개선하는 방법으로, 랜덤 오버샘플링과 같이 분포안에서 랜덤하게 추가 데이터를 생성하는게 아닌 샘플 간..
저번 포스팅에서 불균형 데이터에 대한 접근법으로 임계값 조정을 확인하였습니다. 불균형 데이터 접근법 : 임계값 조정 불균형 데이터(Imbalanced Data) 접근법 : 임계값(threshold) 조정 불균형 데이터(Imbalaned Data)는 데이터 마이닝 세계에서 생각보다 흔히 마주치는 도전 과제이다. 예를 들면, 자살 예측 혹은 질병 예측과 같은 부분에서 흔하다. 자살 시도 혹은 자살 생각을 하는 datanovice.tistory.com 임계값 조정법은 모델을 적합한 이후에 성능을 확인 한 후 적용하는 방법이었습니다. 이번엔 오버 샘플링과 언더 샘플링입니다. 매우 간단한 방법으로, 오버 샘플링(over sampling)은 소수 클래스의 데이터를 다수 클래스만큼 가상 데이터를 만드는 접근법이며, ..
불균형 데이터(Imbalaned Data)는 데이터 마이닝 세계에서 생각보다 흔히 마주치는 도전 과제이다. 예를 들면, 자살 예측 혹은 질병 예측과 같은 부분에서 흔하다. 자살 시도 혹은 자살 생각을 하는 이들을 비교적 많지 않기에 자살 생각이 있다는 Y = 1인 사람이 30명 없다는 Y = 0인 사람이 300명이 있는 경우이다. 이 경우, 모델을 적합할 때 자살 생각이 없다는 300명의 데이터의 패턴을 더 많이 학습하기 때문에 자살 생각을 예측하기 쉽지 않다. 이렇게 예측 모델링에서 클래스 간 불균형은 모델의 학습 능력에 큰 영향을 미칠 수 있으며, 이를 해결하기 위한 전략이 필요하다. 본 글에서는 가장 간단한 방법으로 임계값(Threshold)를 조정하는 방법을 소개하려고 한다. 아마 머신러닝에 관심..
우선, 작성자는 머신러닝에 대해 그리 많은 지식과 경험은 없다. 하지만, 많은 공부와 서적을 함하여 얻은 지식 중 하나는 머신러닝이 모든 것에 대한 정답이 아니란 것이다. 머신러닝은 우리가 데이터를 보기위한 도구 중 하나이다. 결론을 보고 해석하고 적용하는 것은 결국(아직까진?) 인간의 몫이다. 하고싶은 말은 머신러닝은 코드 몇 줄로 내가 얻고싶은 결과를 얻을 수 있는 것이 아니란 것이다. 머신러닝의 세계에서 "No Free Lunch" (NFL) 이론은 중요한 원칙 중 하나로, 이는 모든 최적화 문제에 대해 일관되게 우월한 알고리즘이 존재하지 않는다는 개념을 담고 있다. 이 이론은 데이비드 H. 울퍼트(David H. Wolpert)에 의해 1990년대에 처음 소개되었으며, 머신러닝 알고리즘의 선택과 ..
Data_novice
데이터 노트 📝