검색
검색
공개 노트 검색
회원가입로그인

[이솦] 파이선으로 배우는 AI 기초 07

요약
  • Devision Tree(결정 Tree)에 대한 설명을 포함한 머신러닝 모델 중 하나로, 데이터를 이용해 예측 및 의사 결정을 돕는 방법이다.
  • 프로그래밍에서 조건문(if, elif, else)의 중요성과 기본 사용 방법을 소개하며, 실제 코드 예시를 통해 설명한다.
  • 구독자 수를 입력 받아 수익금을 예측하는 실습 프로그램과 로또 당첨 번호 예측 코드를 통해 조건문의 활용을 실습한다.

이솦 | EBS 소프트웨어 (ebssw.kr)

머신러닝 모델중 많이 사용하는 모델중에 Decision Tree가 있다. 한국어로는 결정 Tree, 의사결정 Tree 라고 한다. 즉 기존의 데이터를 이용해 새로운 것을 예측하고 의사 결정에 도움을 주는 트리를 만드는 방법이다. 스무고개와 비슷하다.

decision tree를 만들기 위해서 필요한 논리구조가 조건문이다. 머신러닝에서 많이 사용하며 프로그램에서 활용도가 높다.

조건문 if

제어문 그중 조건문 if 문을 써보자

우리가 쓰는 프로그램은 작성된 순서대로 실행된다. 하지만 이렇게 순차구조면 원하는 목적을 이룰수가 없다.

에츠허르 데이크스트라는 프로그램을 체계적으로 작성하려면 3가지 방식을 알아야 한다. 또는 3가지가 반드시 있어야 한다. 그것은 순차구조, 조건(분기)구조, 반복구조이다.

if=만약 ~라면 은 조건(condition)을 주고 그 조건에 해당하는지를 확인하는 구문 분기 처리를 할수 있다. 즉 선택의 상황에서 다른 행동을 할때 이며 파이썬에서 조건문은 if 가 유일하다.

if 문의 3가지 세부 구조

if만 사용

if, else 같이 사용 (만약 ~라면 , 그렇지 않다면)

if, elif, else ( if else를 줄여서 elif로 사용한다.) (if, elif 만 사용도 가능하다)

a=42
b=100
if b>a:
    print("b is greater than a")

if 구문 다음엔 항상 조건이 붙는다. 만약 이 조건이 참이면 if문 아래 명령 수행,

조건절 마지막에는 콜론: 을 사용하는거 잊으면 안된다.

a=42
b=100
if b > a:
    print("b is greater than a")
else:
    print("b is not greater than a")

else를 쓰면 이렇게 된다. 단 else 후에 아무런 조건이 없음을 주의하자.

여러개의 연관도니 조건이 있을때 사용하는것이 if, elif 이다.

a=42
b=100
if b > a:
    print("b is greater than a")
elif a == b:
    print("a and b are equal")
else:
    print("a is greater than b")

이때 elif a==b:의 의미는 a와 b가 같다면의 의미가 아니고 b가 a보다 크지 않고를 전제함이다.

메뉴 = '탕수육' #먹고싶은 메뉴
중국집 = ['짜장면', '탕수육', '우동', '삼선짬뽕']
일식집 = ['초밥', '우동', '돈까스']
if 메뉴 in 중국집:
    print("중국집에서 시키자!") # Indent this line with four spaces
elif 메뉴 in 일식집:
    print("일식집에서 시키자!") # Indent this line with four spaces as well

메뉴를 넣고 중국집에 리스트가 있으니 중국집이라고 나온다.

만약 우동이라고 하면 어떻게 될까?

중국집에서 먼저 리스트가 있어서 중국집에서 시키는 것으로 나온다. if, elif 는 중복을 막고 앞조건인 중국집에 해당된다.

if문안에 if문을 넣을수 있을까? 당연히 if 문 안에 if를 넣을수 있다.

a=25
b=12
if b>10:
    print("b is greater than 10")
    if b > a: # Aligned with the previous print statement
        print("b is greater than a") 
    else:
        pass

b 가 10보다 큰 경우, 출력 그리고 b가 a보다 크다면 출력이다. 두번째 if 를 들여쓰기 해서 그 다음 조건이라는걸 맞춰 줘야 한다.

머신 러닝을 위한 조건문 구조에서 특별한 경우는 없다. 다만 일반적인 프로그램에서 조건문을 잘못 사용한 경우

grade = 90
if grade >= 90:
print("A")
if grade >= 80:
print("B")
if grade >= 70:
print("C")

이렇게 만들면 안된다. 만약 이렇게 넣으면 A, B, C가 출력된다.

grade = 90
if grade >= 90:
    print("A")  # Indent this line to include it in the 'if' block
elif grade >= 80:  
    print("B")
elif grade >= 70:
    print("C")

이렇게 해야 A가 나온다

실습

구독자 수를 입력 받으면 수익금이 얼마인지를 알려 주는 프로그램을 짜보자.

gudok = eval(input("현재 구독자수를 입력하세요"))

if gudok >= 1000000:
    print("약1000만원") # Indent this line
elif gudok >=100000:
    print("약100만원") # Indent this line
elif gudok>=10000:
    print("약10만원") # Indent this line
elif gudok >= 1000:
    print("약1만원")  # Indent this line
else:
    print("수익금없음")

eval 함수를 써서 숫자값이이 입력되게 하자. 맨 처음은 if 그 후에는 elif, 마지막에 아무것도 해당되지 않으면 else로 한다.

프로그램 을 표현하는 3가지 구조적 요건 순차요건, 조건, 반복중 조건을 배웠다.

그냥 가기는 아쉬우니, 지난 시간에 한 로또 당첨 번호 코드를 가져와서 본인 숫자를 넣고 같은 숫자가 있으면 당장 사, 그렇지 않으면 기부 감사합니다. 라는 조건문을 만들어보자

import pandas as pd
from math import comb

# CSV 파일 불러오기
file_path = '/content/lotto.csv'  # 실제 CSV 파일 경로로 변경
df = pd.read_csv(file_path)

# 데이터 확인
print(df.head())

# 2번째부터 7번째 행의 데이터를 추출
subset_df = df.iloc[1:7, 1:7]  # 2번째부터 7번째 행, 각 행의 6개 번호 추출

# 각 행의 6개 번호 셋트를 리스트로 변환
number_sets = subset_df.values.tolist()
print("각 행의 6개 번호 셋트:", number_sets)

# 사용자가 입력한 숫자
user_numbers = input("6개의 로또 번호를 입력하세요 (쉼표로 구분): ")
user_numbers = [int(num) for num in user_numbers.split(",")]

# 조합 개수를 기반으로 당첨 확률 계산
total_combinations = comb(45, 6)  # 45개 중 6개를 선택하는 조합 수

# 사용자가 입력한 번호와 과거 데이터 번호 셋 간의 일치 여부 확인
match_count = 0
for number_set in number_sets:
    if set(user_numbers) == set(number_set):
        match_count += 1

# 확률 계산
probability = (match_count / len(number_sets)) * (1 / total_combinations) * 100

print(f"입력한 번호: {user_numbers}")
print(f"일치하는 번호 셋의 개수: {match_count}")
print(f"총 조합 수: {total_combinations}")
print(f"당첨 확률: {probability:.10f}%")

# 확률에 따른 메시지 출력
if probability > 0.0000000:
    print("당장사")
else:
    print("기부감사합니다")
조회수 : 35
heart
공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기
T
페이지 기반 대답
AI Chat