반응형
프로세스 마이닝(Process Mining) 

 데이터 속에서 프로세스를 발견하는 것을 프로세스 마이닝이라 한다.

조금 자세하게 기업의 이벤트 로그 데이터를 이용하여 프로세스를 가시화하고,

기존 프로세스를 개선하여 기존 이벤트 로그 데이터와 비교하여 적합성을 판단한다. 

 

기존의 프로세스 분석은 정성적이지만, 프로세스 마이닝은 정량적 데이터 분석이다.

 

 이벤트 로그 데이터 : 유저의 행동 기록을 의미한다. 데이터에는 고객의 이름(case id), 행동(activity), 시간(time stamp)을 포함한다.

 

프로세스(Process)

 

 

 

프로세스의 종류(라자냐 프로세스와 스파게티 프로세스)

프로세스는 데이터의 종류에 따라 구분될 수 있다. 

스파게티 프로세스를 먼저 생각해 보면, 예를 들어 쇼핑몰의 이벤트 로그 데이터가 있다고 생각해 보자.

쇼핑을 즐긴 사람들의 아이디, 행동, 행동한 시간 그 외의 나이, 성별 등의 데이터가 기록이 될 것이다. 

여기서 우리는 이 데이터를 프로그램을 통하여 프로세스를 가시화해 보면, 뚜렷한 패턴을 가지지 않은 스파게티와 같은

프로세스가 도출된다. 

 

스파게티 프로세스process
An excerpt of a "spaghetti"-like process model. Download Scientific Diagram (researchgate.net)

그 이유는 쇼핑을 할 때의 우리를 생각해 보면 물건을 검색하고, 장바구니에 담거나 로그인을 하는 등 뚜렷한 패턴을 가지지 않고 하는 행동 때문이다. 

 

 

라자냐 프로세스는 쇼핑몰에서 판매할 때의 데이터를 생각해 볼 수 있다.

주문이 접수되었을 때부터 물건이 포장되어 배송되는 과정까지 일련의 프로세스로 정립이 되어있다. 

때문에 복잡한 구조를 가지지 않고 하나의 흐름으로 이루어져 있다. 

여기서, 불량을 고려하면 몇 가지의 프로세스가 더 있을 수 있다.

 

process
A structured, or "lasagna"-like, process model. Download Scientific Diagram (researchgate.net)

 

 

데이터 분석

우리는 위와 같은 데이터를 가지고 프로세스를 분석할 수 있다.

자주 불량이 나는 물건이나 부품을 개선할 수 있고, 쿠폰을 배포하는 데에 적절한 사람을 도출하는 것 등의 

특정 목적을 가지고 인사이트를 확인하는 과정을 프로세스 마이닝을 통하여 할 수 있다.

 

반응형
반응형

 

인공지능, 머신러닝, 딥러닝, 지도학습, 강화학습 등 많이 쓰이는 단어들이지만 확실하게 이해하기 어려운 단어들인데요. 

정말 쉽고 간단하게 설명해 보겠습니다!

 

 

 

범주로 나누면 인공지능 > 머신러닝 > 딥러닝 순입니다.

 

 

인공지능을 구현하는 하나의 방법이 머신러닝(ML)입니다. 머신러닝의 여러 방법 중 하나가 바로 딥러닝입니다. 

딥러닝이란, 사람의 뇌와 유사한 방식으로 정보처리를 할 수 있는 방법입니다.

딥러닝은

 인지되는 데이터를 합치고 구분하는 과정을 반복해 정보를 학습합니다.

 

 

 

 

 

사실, 인간의 뇌는 엄청난 데이터 처리 능력을 가지고 있습니다.

뇌는 생존에 유리하게 끊임없이 진화하기 때문에, 사람들은 뇌의 진화 방식을 착안하여 여러 가지 학습 방법을 고안합니다.

지도학습, 비지도학습, 강화학습이 대표적인 그 예시이죠!

 

 

 

 

강화학습이란 

 

 

우리가 흔히 반려견에게 배변교육을 할 때에 볼 수 있습니다.

강아지가 교육을 잘 이행하였다면 상으로 간식을 주고, 그렇지 않았다면 벌로 간식을 주지 않습니다. (혹은 혼을 냅니다.) 

이와 같이 행동의 결과로 보상과 벌을 줌으로써 보상을 계속 받을 수 있는 행동을 하는 것이 강화학습입니다.

 

 

 

 

반응형
비지도학습이란

 

 

여러 종류의 새와 물고기 그리고 마카롱을 보여줍니다. 이후에 또 다른 새를 보여줄 때, 새의 군집으로 인지하는 것이 바로 비지도학습입니다. 즉, 유사한 특징을 가진 것 끼리 분류하는 것이죠!

 

 

 

 

지도학습이란

 

 

반지를 보여준 후 반지라고 알려주는 학습을 여러 번 거치면, 다음에 다른 모양의 반지를 보여주어도 반지로 인지하는 것이 바로 지도학습입니다. 

 

 

 

 

각 단어의 의미는 이제 감이 조금 오셨나요?! 그렇다면, 지도학습을 직접 만들어볼 수 있는 티처블 머신에 대해서 간단히 학습해보겠습니다. 

 

 

 

 

티처블 머신 원리와 활용법

 

 

Teachable Machine

Train a computer to recognize your own images, sounds, & poses. A fast, easy way to create machine learning models for your sites, apps, and more – no expertise or coding required.

teachablemachine.withgoogle.com

 

이 링크를 따라 들어간 후 시작을 해봅시다. 

 

 

 

 

이미지를 학습을 시킨 후 하나의 이미지를 보여주거나 들려줄 때 학습한 인공지능은 어떤 이미지이다. 라고 출력합니다. 

(얼만큼 유사한지 유사도가 퍼센테이지(%)로 나옵니다!)

이와 마찬가지로 오디오, 포즈도 학습해볼 수 있습니다. (이미지 프로젝트 - 표준 이미지 모델 - 업로드 선택)

 

 

 

 

 

저는 모양이 비슷한 반지와 마카롱의 사진을 여러 장 업로드하여 학습을 시켰습니다! 

 

 

 

 

 

이후 마카롱 사진을 업로드하면, 출력에 100% 마카롱이다! 반지 사진을 업로드하면, 출력에 100% 반지이다! 라고 출력이 됩니다. 유사한 사진이지만 분명하게 다른 특징을 구분하여 정확한 개체를 찾아 출력합니다.

 

 

 

지도학습의 티처블 머신을 활용한 기능들이 일상에 숨어있습니다. 바로 인스타그램에서 연예인 닮은꼴을 찾는 기능이죠! 또한, 이 지도학습의 원리를 이용한다면 나만의 새로운 기능을 만들 수 있겠죠??! 꽃이나 나무 또는 곤충 찾기 등 다양한 방식의 프로그램을 만들 수 있을 것 같습니다! 

 

반응형
반응형


저는 파이썬을 배우고 c언어를 익히려고 합니다!!
그런데 생각보다 c언어가 코드를 작성하기 더 어렵고, 헷갈리더라고요..
약간 파이썬은 직관적으로 해석하기 용이했는데, c언어는 앞 뒤로 왔다갔다해야해서 직관적이지 않은 것 같아요.
그래서 오늘은 반복문을 활용할 때 어떤 차이점이 있는지 생각해보려고 합니다.



아래는 python에서 for문을 활용하여 구구단 코드를 작성한 것 입니다.

for dan in range(1,10):
    print("%d단을 출력합니다." %dan)
    for i in range(1,10):
        print('%d X %d = %d' %(dan,i,dan*i))
 
 
파이썬에서 for문은 범위 안에 1부터 10전까지 (1~9 동안)
1단을 출력하고 그 루프 안에서 1 x 1 = 1, 1 x 2 = 2, 1 x 3 = 3 ... 으로 출력이 되고,
아래의 for문이 끝나면 dan의 range 안에 있는 1 다음인 2를 출력하게 됩니다.
 
 
다음은 c언어 에서의 for문을 활용한 구구단 코드입니다. 
#include <stdio.h>

int main(void)

for (int i = 2; i <= 9; i++)
{
printf("%d단 계산\n", i);
for (int j = 1; j <= 9; j++)
{
printf("%d x %d = %d\n", i, j, i * j);
}
}
return 0;
}

c언어에서는 for(선언, 조건, 증감)을 표시하는데, 이때 단을 먼저 출력하고
이후, i + 1이 이루어진 후 아래 for 문으로 내려가 j가 10이 될 때까지 단을 출력하고
이 for 문이 끝나면 위로 올라가 다음 단을 출력합니다.

실제로 코드 길이는 거의 비슷하지만, c언어에서는 시작과 조건 그리고 끝이 확실하게 짜여져있는 것 같아요.
그래서 더 자유롭게 코드를 짤 수 있을 것 같네요!

반응형
반응형


다른 블로그들은 연산자를 선택하여 계산을 하는 계산기가 거의 대부분이더라고요!
그래서 저는 나누기 곱하기 더하기 빼기가 섞인 연산을 할 수 있는 코드 작성을 해보려고 합니다!!

 

파이썬 백준 입력 조건 이해하기 / 사칙연산, 계산기

오늘은 백준에서 문제를 풀고 나름대로 코드를 작성해서 입력을 했는데도.. 계속 런타임에러나 컴파일 에러가 나오는 분들에게 도움이 되고자!! 제가 이해한 내용을 포스팅합니다~ 먼저, 가장

irunstudy.tistory.com

 

문제 : 사용자에게 입력받은 사칙연산하는 계산기를 만드시오.

 

입력 : cal1 = input() # "5*7+10/2-2"



먼저, 문제에서 사용자에게 입력받은 값의 type은 문자열로 받기에 이를 이해해야합니다.
잘 살펴보면 저희는 숫자를 가지고 규칙이 있는 코드를 작성할 수 없기에 +,-,*,/를 기준으로 문자열을 이용해야하는 것을 알 수 있습니다! 만약 자릿수가 다르게 입력되어도 코드가 실행되어야하기에 이를 고려해주어야합니다.

cal1 = cal1.replace('+',' + ').replace('-',' - ').replace('*',' * ').replace('/',' / ')
cal1 = cal1.split(' ')
cal1_list = []


저는 연산자를 포함해서 모든 값을 리스트에 넣고 싶었습니다. 그럴려면 각 연산자를 기준으로 일일이 다 나누어주는 방법과 특정 문자 또는 공백을 연산자 앞뒤에 넣어 스플릿함수를 사용하면 될 것 같았습니다!
그래서 각 연산자 앞뒤로 공백을 넣어주고, 이후 이를 공백 기준으로 잘라서 리스트 형태로 cal1에 저장했습니다.
이후로 고려해야 할 것은 곱하기 나누기를 먼저한 이후 더하기 빼기를 계산해야하므로 곱하기 나누기 앞뒤의 숫자를 먼저 계산해주고! 마지막 자리에 넣어주고 더하기 빼기를 다른 리스트를 생성해서 연산자와 더해줍니다!!

"5 * 7 + 10 / 2 - 2" 에서 곱하기를 한 후
"35 + 10 / 2 - 2"에서 나누기를 계산하고
"35 + 5 - 2"로 계산이 되고 이후 차례로 계산하는 코드를 작성할 것 입니다.

 

   for i in range(0,len(cal1)):
        if cal1[i] == '*':
            val = float(cal1[i-1])*float(cal1[i+1])
            del cal1[i+1]
            cal1.insert(i+1,val)

        elif cal1[i] == '/':
            val = float(cal1[i-1])/float(cal1[i+1])
            del cal1[i+1]
            cal1.insert(i+1,val)

        elif cal1[i] == '+':
            cal1_list.append(float(cal1[i-1]))
            cal1_list.append(cal1[i])

        elif cal1[i] == '-':
            cal1_list.append(float(cal1[i-1]))
            cal1_list.append(cal1[i])
   
    cal1_list.append(float(cal1[len(cal1)-1]))
 
이렇게 하면 사실 중간중간 cal1의 리스트에는 남아 있는 데이터가 있습니다. 하지만, 계속 list index가 뒤로 밀려서 계산이 이루어지기 때문에 중복값이 나오지 않고 계산이 되는 것 입니다. 또한 중복 계산되지 않도록 cal1_list를 생성하여 여기에 추가를 합니다.

 


    for i in range(0,len(cal1_list)):
        if cal1_list[i] == '+':
            val = cal1_list[i-1] + cal1_list[i+1]
            del cal1_list[i+1]
            cal1_list.insert(i+1,val)

        elif cal1_list[i] == '-':
            val = cal1_list[i-1] - cal1_list[i+1]
            del cal1_list[i+1]
            cal1_list.insert(i+1,val)
       
    print(cal1_list[len(cal1_list)-1])


마지막으로 cal1_list에 있는 더하기 빼기를 계산해주면 사칙연산 계산기 코드 작성 완료!!

반응형
반응형

오늘은 백준에서 문제를 풀고 나름대로 코드를 작성해서 입력을 했는데도.. 

계속 런타임에러나 컴파일 에러가 나오는 분들에게 도움이 되고자!!

제가 이해한 내용을 포스팅합니다~

 

 

먼저, 가장 기본 문제 중 1000번을 가지고 와보았습니다.

 

 

 

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

입력 : 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)

저는 이 부분을 생각해보지 않고 마음대로 

 
A = 5
B = 2
print(A+B)

처음에 이런 식으로 코드를 작성했었습니다..!

이렇게 코드를 작성하면 컴퓨터 입장에서는 입력칸에 주어진 조건대로 두 정수 A와 B를 입력하는데, 이를 받지 않고

print()를 작성해버리니 계속 에러가 뜰 수 밖에 없었던 것이죠.

 

그래서 입력 부분의 A와 B를 각각 받아 변수에 저장하기 위해서 다음과 같이 코드를 작성해주었습니다. 

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

 

이렇게 작성해주면 입력 받은 값을 공백을 기준으로 앞과 뒤를 나누어주고 이를 정수형(int)로 바꾸어 변수를
 
a와 b에 저장할 수 있게 됩니다! 
 
# 참고
 
map(,)함수는 뒤의 값을 앞의 자료형으로 바꾸어줍니다. (리스트 안에 있는 모든 값을 특정 자료형으로 바꿀 때 사용됩니다.)
input()은 사용자에게 값을 입력받을 때 사용하는 함수입니다.
split()은 ()안의 특정 값으로 (',')일 때는 ,를 기준으로 문자열을 나누어(slicing) 리스트 형태로 저장합니다.
 
 

이를 알게 된 이후로  10869번 사칙연산을 풀어봤어요!
두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 
 
입력 : 두 자연수 A와 B가 주어진다. (1 ≤ A, B ≤ 10,000)

입력을 고려해서 아래와 같이 코드를 작성했더니 잘 출력이 되었습니다.

A,B=map(int,input().split())
print(A+B)
print(A-B)
print(A*B)
print(A//B)
print(A%B)
파이썬에서 사칙연산
더하기 : +
빼기 : -
곱하기 : *
몫 : //
나머지 : %
나누기 : /
 
다음 포스팅에서는 실제 사칙연산 함수의 코드를 작성해볼게요!
반응형
반응형

오늘은 VSCode 다운로드를 하려고 합니다! VSCode는 코딩을 할 때 여러가지 편리한 기능을 제공해주는데요.
검정 바탕에 흰 영어 글씨만 써 있으면 눈으로 읽기가 쉽지 않죠!?
이 부분을

class AttackUnit(Unit):
    def __init__(self, name, hp, speed, damage):
        Unit.__init__(self, name, hp, speed)
        self.damage = damage
       
    def attack(self, location):
        print("{0} : {1} 방향으로 적군을 공격합니다. [공격력 {2}]"\
            .format(self.name, location, self.damage))
   
    def damaged(self, damage):
        print("{0} : {1} 데미지를 입었습니다.".format(self.name, damage))
        self.hp -= damage
        print("{0} : 현재 체력은 {1} 입니다.".format(self.name, self.hp))
        if self.hp <= 0:
            print("{0} : 파괴되었습니다.".format(self.name))
이러한 형태로 눈에 잘 띄게 도와줍니다! 
#출처 유튜브 나도코딩의 코딩을 따라하며 작성한 코드입니다!
또, 디버깅이라는 옵션으로 내가 어떤 부분에서 어떤 오류가 생기는지 알 수 있습니다!
특히 코딩은 컴퓨터가 이해할 수 있도록 작성해야하는데 사람이 작성하다보면 분명 논리적인 오류가 발생하곤 하는데요. 그때 이 옵션의 효과가 강력합니다!!
 
VSCode 설치 과정
 

https://code.visualstudio.com/download 사이트에 접속합니다.

자신의 운영체제에 맞는 것을 눌러 다운로드를 진행합니다!



설치가 완료되면 파일을 열고 실행합니다.
이용약관에 동의한 후에~~



파일을 설치할 위치를 선택한 후 다음을 눌러 설치를 진행합니다!



이 설치창에서 PATH에 추가를 꼭 해주시는게 좋습니다. 누르지 않으면 다른 위치에서 python을 실행할 수 없습니다. 나중에 PATH를 추가하고 설정해주려면 처음 코딩을 하는 분들은 정말 어렵거든요..ㅠㅠ 말이 이해가 안되서..저도 처음에 그냥 했다가 3~4시간 동안 이거 관련해서 계속 찾아봤어요!!




설치 준비가 완료되면 설치를 진행합니다.



이렇게 설치를 완료할 수 있습니다.!



이후 Anaconda Prompt를 실행하여 python을 입력해 위에 두 줄 같이 실행이 된다면 어제 설치했던 Anaconda가 정상적으로 설치된 것 입니다!



VSCode를 실행하여 'Hello, world'를 print()를 호출하여 실행해봅시다!
헷갈리실 수 있는 VSCode의 기능..! 오른쪽 하단에 보이는 Plain Text는 현재 특정 언어로 지정된 것이 아닙니다.

파이썬으로 사용하시려면 Plain Text를 눌러 Python으로 변경하거나 이 파일을 저장할 때 아래 사진과 같이 Python 파일 형식으로 저장해야 정상적으로 실행됩니다!!!!!!

 

이후 정상적으로 Hello, world가 출력된다면 정상적으로 VSCode가 설치된 것입니다.!!!

반응형
반응형

파이썬은 인공지능(AI) , 게임 분야 등에 활용되는데요! 특히 다른 언어를 공부하기 이전에 처음으로 접하기 쉬운 언어입니다!



개발 환경이란?
프로그램을 개발하고 실행하는 환경입니다.
저는 이 개발 환경을 조성하기 위해 많은 사람들이 많이 사용하는 AnacondaVSCode를 이용하려고 합니다!!





개발환경 요소

  • 운영체제(Operating system)를 확인한다. (ex. Windows 11 64비트 운영체제)

확인 방법! <내 PC(오른쪽 클릭) - 속성 - 시스템 종류와 에디션 확인>

  • 파이썬 인터프리터로 Anaconda를 다운로드할 것이고,
  • 코드 Editor로 VSCode를 다운로드 것 입니다!









Anaconda 설치 과정



https://www.anaconda.com/ 사이트에 접속

다운로드 버튼을 누르면 내 운영체제에 맞게 다운로드됩니다!



다운로드가 완료되면 파일을 실행한 후,
NEXT - 약관 동의를 눌러서 다운로드를 진행합니다.



개인 PC에서 다운로드를 하면 위에 것을 눌러 진행하면 됩니다.
이후 설치 위치를 설정하여 다운로드를 진행합니다.



이때, 아래 옵션을 선택해야 다른 프로그램(파이썬 툴)을 사용할 수 있습니다!!!
다음다음 넘겨주시고~



완료를 누르면 Anaconda 설치 완료!!





이어서 Visual Studio Code 설치 과정을 올리겠습니다~~

반응형

+ Recent posts