머신러닝 (Python)2026. 6. 29. 22:47
728x90

[ 문제 원인 ]

xgboost 모듈은 아나콘다에서 미제공하므로, pip install로 설치가 필요하다.

만약, 설치되어 있지 않다면 아래코드 실행시 오류 발생한다.

- (참고) 라이브러리 > 모듈 > 함수 개념이다.

- 설치필요 모듈 : xgboost, lightgbm

 

# import models (Classification)

#단일모델
from sklearn.linear_model import LogisticRegression #로지스틱회귀
from sklearn.tree import DecisionTreeClassifier     #결정트리
from sklearn.neighbors import KNeighborsClassifier  #kNN

#앙상블 (Bagging - 병렬구조)
from sklearn.ensemble import RandomForestClassifier #랜덤포레스트
from sklearn.ensemble import ExtraTreesClassifier   #엑스트라 트리

#앙상블 (Boosting - 직렬구조)
from xgboost import XGBClassifier                   #XGB
from lightgbm import LGBMClassifier                 #LGBM

 

ModuleNotFoundError: No module named 'xgboost'

 

 

[ 해결방법 ]

pip install 명령어로 xgboost 설치하면 해결된다.

참고로, pip명령어는 파이썬 문법이 아니다. 그래서 원래는 cmd같은 os터미널에서 처리해야되는 명령어이다.

특수기호 !(느낌표)를 붙임으로써, 파이썬코드가 아닌 컴퓨터 터미널(cmd)에 명령을 주피터노트북에서 바로 내릴 수 있다.

 

!pip install xgboost #os 터미널에 명령을 내림

#pip install xgboost #(참고) 요즘에는 !없어도 정상동작

 

 

참고로, 요즘에는 주피터 노트북이 업그레이드되어서 !pip가 아닌 그냥 pip로도 정상 동작한다.

 

아래 명령어 입력 -> Shift+Enter해보면, pip명령어 앞에 접두사(prefix)가 필요없다고 나오는 것에서 확인할 수 있다.

lsmagic

 

 

 

(참고) !pip install 실행결과

lightgbm 역시 에러가 발생하므로, pip install 해줘야 된다.

해당 셀의 헤더(파란색 부분) 클릭 -> 'a' 버튼으로 위에 셀을 하나 생성해주고, pip insall 해준다.

ModuleNotFoundError: No module named 'lightgbm'

 

 

설치 후, 에러 없이 잘 동작함을 확인할 수 있다.

 

!pip install lightgbm #os 터미널에 직접 명령(!)

반응형
Posted by mminky
머신러닝 (Python)2026. 6. 29. 21:00
728x90

- 아나콘다(Anaconda) : 머신러닝 등 파이썬 개발에 필요한 패키지를 모아둔 종합 배포판

- 주피터 노트북(Jupyter Notebook) : 웹에서 파이썬 실행 가능함, 셀 단위로 실행하고 즉시 결과 확인 가능함

 

사실, 위의 개념을 이해하고 시작하긴 어렵고

아나콘다를 설치해서 머신러닝 및 파이썬을 할수 있다 정도로 이해하면 된다.

 

 

[ 아나콘다 설치 ]

https://www.anaconda.com/download/success?reg=skipped

 

회원가입 할 필요 없이 'Skip Registeration' 선택하면 된다.

 

그리고, Anaconda Distribution에서 Window 64-Bit 파일을 다운로드 받아서 설치하면 된다.

 

 

 

[ Jupyter Notebook 실행 ]

작업표시줄 - Juypter Notebook 검색 - 클릭해서 실행

 

 

아래와 같은 cmd 창이 뜬다.

이 창은 네트워크 연결해주는 역할을 하므로, 끄지 말고 최소화만 해두기

 

그리고, 이제 인터넷에서 주피터 노트북이 뜬다.

나는 바탕화면에 있는 폴더에서 작업할 것이므로, 'Desktop - 원하는 폴더'로 클릭해서 이동한다. 

 

(참고)

아나콘다 프롬프트를 이용하여 띄우는 법도 있다.

https://mminky.tistory.com/113

 

주피터 노트북 실행 (jupyter notebook)

우선 아나콘다 프롬프트를 실행한다. cd 명령어를 이용해 원하는 폴더로 이동한다. 이 폴더에서 저장되고 동작되기 때문에 빈 폴더를 추천한다! 주피터 노트북을 입력하면 자동으로 실행된다. ju

mminky.tistory.com

 

 

[ Jupyter Notebook 단축키 ]

- 실행 : Shift + Enter

- 주석 : #


- 상단셀 생성 :
셀 클릭해두고 a

- 하단셀 생성 : 셀 클릭해두고 b

 

- 코드 복구(1회만 가능) : Ctrl + z

- 해당 셀 제거 : 연속으로 dd키 누르기

- 셀 분리 : 커서를 두고 Ctrl + Shift + -

 

- 셀 타입 변경 : 헤더 눌러서 command모드로 만들고, 단축키 누르기 (M / R / Y)

  1) Markdown (M) : 꾸밀 수 있는 셀. ex. ###글자크기3 ##글자크기2 #글자크기1 등

  2) Raw (R) : 적는 그대로 나오는 칸

  3)  Code (Y) : 코드를 실행하는 칸

파란색바(헤더) 클릭 후, 'M' 입력 -> Markdown

 

 

- 현재 선택한 셀 바로 위까지 run 하고 싶을 때 : Run - Run All Above Selected Cell

반응형
Posted by mminky
머신러닝 (Python)2026. 6. 29. 20:48
728x90

[ 기본 용어 ]

- 학습 : '양질의 학습 Data + 학습방법 Algorithm' -> 모델에 학습

- 모델 : 뭔가를 해내는 대상임

- EDA (Exploratory Data Analysis) : 탐색적 데이터 분석. 데이터를 본격적으로 처리하기 전에, 다양한 각도에서 데이터 분석

- 양적 변수 : 양적으로 늘어나는 변수 (ex. 10, 20, 30 ...)

- 질적 변수 :  카테고리를 구분하기 위해 이용됨. 실제로 양적으로 두 배는 아님 (ex. 여자 1, 남자 2)

   ※ '순서'는 질적 변수이므로 혼동하지 말기. (ex. 2월은 1월의 두 배가 아님. 카테고리 구분용이므로 양적이 아닌 질적 변수임)

 

 

[ 머신러닝 ]

- 머신러닝 : Tree구조, CPU로 처리 가능

- 인간이 개입하여 '정형 데이터 Structured Data'로 추출을 해야됨.

- 분야 : 금융사기탐지, 추천시스템, 주가예측, 질병진단 등 다양한 분야에서의 예측, 보편적임

- 알고리즘:  선형회귀, 로지스틱회귀, 의사결정나무, 랜덤포레스트, SVM, KNN, XGBoost

 

[ 딥러닝 ]

- 딥러닝 : 사람의 신경망을 모방한 다중신경망 구조, GPU 필요함

- 특징정보 추출 등 데이터 추출부터 모델이 알아서 함 (인간개입 x)

- 분야 : 이미지, 음성인식, 자연어처리(NLP), 자율주행 등 복잡한 문제

- 알고리즘 : CNN, RNN, Transformer, GAN (N=Network)

 

 

(참고)

보통 딥러닝은 GPU를 돌려야 하기 때문에, 보통 머신러닝 강의는 많으나 딥러닝 강의는 거의 없음.

환경조성부터 어렵기 때문.

 

반응형
Posted by mminky
기타2023. 4. 18. 19:49
728x90

유럽의 법규 요구성능인 DDAW와 ADDW에 대한 한글자료가 몇 없는 것 같아 정리해본다.
 
[ DDAW ]
Driver Drowsiness and Attention Warning (DDAW) systems
운전자의 졸음 및 주의력을 모니터링 하고,
졸음 등이 감지되면 시각적, 청각적 방법으로 경고하기 위한 시스템.
 
2022 7월까지 모든 차에 적용되어야됨
 (the aim is for DDAW systems to be mandated on all new vehicles by July 2022)
* 참고영상 : https://youtu.be/Ta7I0OB_RWU

 
[ ADDW ]
Advanced Driver Distraction Warning (ADDW) systems
운전자의 주의력이 분산되지 않도록 감지하는 시스템.
2024년까지 전반적인 이동기기에 적용되어야 함( Advanced Driver Distraction Warning (ADDW) systems, which is required for conventional vehicles by 2024. )

ADDW is defined as a system capable of recognising the driver's level of visual attention to the traffic situation and warning the driver when distracted.
* 참고자료 : https://extranet.idiada.com/iris/-/asset_publisher/1d6ZLmMjPpsF/blog/advanced-driver-distraction-warning-addw-first-report/11719?inheritRedirect=false 
 
 
 
[ 추가자료 ]
1. DDAW와 ADDW의 전반적인 설명
https://www.trl.co.uk/projects/driver-drowsiness-and-attention-warning--ddaw--systems

TRL | Driver Drowsiness and Attention Warning (DDAW) systems

TRL is working alongside the European Commission (EC) to develop critical regulation around Driver Drowsiness and Attention Warning (DDAW) systems – which are designed to monitor drivers’ levels of drowsiness and warn them when it is no longer safe to

www.trl.co.uk




2. EU's General Safety Regulation and Commercial Vehicles
: 전반적인 EU의 규제에 대한 설명을 들을 수 있음 (연도별) 
https://www.youtube.com/watch?v=Y2aDepHU6Gw 

 

반응형
Posted by mminky
알고리즘2023. 2. 21. 23:21
728x90

[ 문제 ]

https://softeer.ai/practice/info.do?idx=1&eid=395 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

 

 

[ 코드 ]

w,n = map(int,input().split())

jewerly = [list(map(int,input().split())) for _ in range(n)]
#금속무게 Mi, Pi가 들어오면 우선 map(int,input().split())으로 각각 정수로 받음
# -> 정수 Mi, Pi를 리스트로 묶음 ex. [Mi, Pi]
# -> [Mi, Pi]리스트를 n개 만듦 (파이썬 2차원 리스트) //https://mminky.tistory.com/141

jewerly.sort(key=lambda x: x[1],reverse=True)
# 리스트 jewerly를 정렬할거임.
# 이때, 기준x의 형태는 x[1]임. 즉, 가격인 Pi를 기준으로 정렬함.
# [Mi, Pi]에서 'Mi의 인덱스는 [0]', 'Pi의 인덱스는 [1]'이기 때문.
# reverse=True를 통해 오름차순 정렬. //https://mminky.tistory.com/170

sum_price = 0
for mi, pi in jewerly: # 리스트 jewerly에 있는 모든 mi,pi에 대해 수행
    # 지금넣는무게 <= 전체가방무게
    if mi <= w :
        sum_price += mi*pi #해당 item을 해당 price만큼
        w -= mi #item넣고 남은 무게로 w 갱신
    # 지금넣는무게 > 전체가방무게
    else:
        sum_price += w*pi #item넣고 남은 무게인 w를 해당 price만큼
        break #남은가방무게 보다 큰 애들이 나오면 끝

print(sum_price)

 

 

[ 해결 아이디어 ]

우선 이 문제는 몇 번 틀렸었다.. 그래서 코드별로 정리해보는 아이디어 노트!

 

1. 리스트 정렬

jewerly.sort(key=lambda x: x[1],reverse=True)

(오답노트)

처음에는 아래 처럼 딕셔너리를 이용해서 정렬을 했다.

# sort_dic_value = list(sort_dic.keys())
# sort_dic_weight = list(sort_dic.values())

 

하지만 문제는 딕셔너리는 중복이 안 된다.

따라서 [무게, 가치]라고 했을 때, [90, 2] 다음에 [70, 2]가 들어온다면

[90, 2]에 대한 정보는 사라지고 [70, 2]로 갱신되어 버린다.

그래서 값이 틀려진다.

위에 첨부한 코드대로 리스트 정렬을 하자!

 

2. break 

    # 지금넣는무게 > 전체가방무게
    else:
        sum_price += w*pi #item넣고 남은 무게인 w를 해당 price만큼
        break #남은가방무게 보다 큰 애들이 나오면 끝

(오답노트)

처음에는 else에 break를 쓰지 않았다.

그 결과 테스트케이스를 돌려보니 runtime error가 났다.

 

for mi, pi in jewerly: 라는 for문을 이용하게 되면 가방 안에 모든 무게를 다 넣어도

jewerly리스트 내의 모든 [mi,pi]에 대해서 반복문을 실행한다.

그래서 가방무게를 초과해서 계산하기도 한다.

어차피 지금 넣는 무게 > 전체 가방 무게 라면 전체가방 만큼만 쪼개어 넣으면 끝이기 때문에

break를 해줘서 for문을 끝내주자!

 

 

[ 결과 ]

반응형
Posted by mminky
알고리즘2023. 1. 14. 18:10
728x90

[ 문제 ]

https://softeer.ai/practice/info.do?idx=1&eid=362 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

 

[ 코드 ]

n = int(input())

for i in range(n):
    a,b = map(int,input().split(' '))
    sum = a+b
    print("Case #%d: %d" %(i+1,sum))

 

[ 해결 아이디어 ] - 형식 지정 출력

 

* 문제 발생

처음에는 다음과 같은 코드로 print 했다.

print("Case #",i+1," ",sum)

 

하지만 print( , , )는 각 인자들을 띄어쓰기로 연결한다.

얼핏 보기에는 맞아보였지만 코드를 돌려보니 띄어쓰기가 틀렸다.

(노란색으로 표시한 부분이 print문을 ','를 이용 했을 때 발생하는 띄어쓰기이다.)

 

* 해결

그래서 형식을 지정해서 출력하는 방법으로 다시 시도했다.

이 방법은 따옴표 안에 원하는 형식으로 쓰고 거기에 들어가는 변수를 지정해주는 방법이다.

 

즉, Case #1: 2 이렇게 표현하고 싶다면 print 구문 안에 Case #%d%d 이렇게 적어주면 된다. (%d는 정수를 의미)

그리고 뒤에오는 %에는 순서대로 %d에 넣을 변수를 입력해준다.

 

print("Case #%d%d%(i+1,sum))

 

간단하게 실행 결과를 보여주면 다음과 같다.

i = 0
sum = 2
print("Case #%d: %d" %(i+1,sum))

 

-> 코드 실행 결과

    첫 번째 %d에는 i+1 값인 1이 출력되었다.

    두 번째 %d에는 sum 값인 2가 출력되었다.

 

 

[ 결과 ]

반응형
Posted by mminky
알고리즘2023. 1. 14. 17:56
728x90

[ 문제 ]

https://softeer.ai/practice/info.do?idx=1&eid=1016 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

 

[ 코드 ]

a,b = map(int, input().split(' '))

if a > b:
    print("A")
elif a < b:
    print("B")
else:
    print("same")

* 파이썬은 if, elif, else 구문이다.

 

[ 결과 ]

반응형
Posted by mminky
알고리즘2023. 1. 14. 17:30
728x90

[ 문제 ]

https://softeer.ai/practice/info.do?idx=1&eid=990 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

 

[ 코드 ]

sum = 0
for _ in range(5):

    start, finish = input().split(' ')
    start_hour, start_min = map(int,start.split(':'))
    finish_hour, finish_min = map(int,finish.split(':'))

    gap_hour = finish_hour - start_hour
    gap_hour_to_min = gap_hour * 60

    gap_min = finish_min - start_min

    sum += gap_hour_to_min + gap_min

print(sum)

 

[ 해결 아이디어 ]

시작시간과 끝나는 시간을 각각 hour와 min으로 나누었다.

이 때 주의할 점은 map(int, start.split(':')) 을 이용하여 int로 바꿔줘야된다. (계산을 위해)

 

처음에는 gap_min = finish_min - start_min을 해야되는데

09:34 18:27과 finish_min(27)이 start_min(34)보다 작은 경우에는 어떻게 하지 라는 생각을 했다.

하지만 결국 일한 시간을 분으로 나타내는 것이기 때문에 27-34 = -7이 나와도 전체결과에는 문제가 없다.

 

[ 결과 ]

반응형
Posted by mminky