분류 전체보기
-
탐색적 데이터 분석(Exploratory Data Analysis)경제 2024. 9. 7. 20:30
탐색적 데이터 분석은 데이터를 분석하기 전에 그 데이터를 시각적으로 탐색하고, 패턴이나 이상점 같은 것들을 찾아내는 방법이다. 말하자면, 데이터를 정리하고 시각적으로 표현해서 "이 데이터가 어떤 특성을 가지고 있나?"를 알아보는 거다.탐색적 데이터 분석(Exploratory Data Analysis) 기법들에 대해서 알아보자 줄기-잎 그림(stem-and-leaf display) : 줄기-잎 그림은 데이터를 순서대로 나열하면서 분포의 모양을 보여준다. 히스토그램이랑 비슷하지만, 실제 데이터 값을 보여준다는 장점이 있다. 왼쪽에 있는 게 줄기(stem)고, 오른쪽에 있는 게 잎(leaf)인 거다.여기서 줄기는 10의 자리, 잎은 1의 자리를 나타낸다.예를 들어 줄기 5와 잎의 2는 52, 줄기 5와 잎의..
-
Ammonite란?컴공지식/프로그래밍언어론 2024. 9. 7. 15:07
Ammonite는 Scala REPL (Read-Eval-Print Loop) 의 더 모던한 버전이다.REPL은 코드를 바로 실행하고 결과를 바로 볼 수 있는 인터프리터 같은 역할을 한다.그래서 Ammonite도 Scala 코드를 작성하고 바로 실행할 수 있는 도구라고 보면 된다. 일반적인 Scala REPL보다 더 많은 기능을 지원하는 개선된 버전이고기본적인 Scala 인터프리터는 외부 라이브러리를 직접 가져오는(import) 걸 지원하지 않는데, Ammonite는 이걸 지원한다.즉, Ammonite에서는 쉽게 외부 패키지를 가져다 쓸 수 있다는 말이다.Ammonite는 Scala 코드를 빠르게 테스트하고 외부 패키지를 쉽게 가져올 수 있게 도와주는 강력한 도구다. https://ammonite.io/..
-
Parser란?컴공지식/프로그래밍언어론 2024. 9. 7. 14:56
Parser는 인터프리터나 컴파일러의 일부다.프로그램(코드)을 분석해서 이게 뭔지 파악하고, 그 구체적인 문법(Concrete Syntax)을 추상 문법(Abstract Syntax) 으로 변환해 주는 역할을 한다. 구체적 문법(Concrete Syntax)이 뭔지 다시 간단하게 정리를 해보자면예를 들어, x + 1 같은 코드가 구체적 문법이다. 추상 문법(Abstract Syntax)는 x + 1이라는 코드를 Add(Var("x"), Num(1)) 같은 구조로 변환하는 게 추상 문법으로 바꾸는 과정이다. 이 과정을 파싱이라고 한다.그래서 파서를 만들려면, 언어의 구체적 문법(Concrete Syntax)에 대한 명확한 명세(specification)가 필요하다.바로 BNF를 이용하여 명세하는 것이다...
-
BNF (Backus-Naur Form)를 이용한 산술 표현에 대한 문법컴공지식/프로그래밍언어론 2024. 9. 7. 02:04
BNF (Backus-Naur Form)는 프로그래밍 언어에서 문법을 정의할 때 자주 사용하는 형식이다. BNF 문법의 기본 구조는 다음과 같다. expr ::= { "+" expr expr } | { "-" expr expr } | num num ::= "1" | "42" | "17" | ... expr은 non-terminal(비종결 기호)이라고 부른다. 무슨 뜻이냐면, 이게 다른 문법 규칙에 의해 더 구체적인 표현으로 재작성될 수 있다는 뜻이다. ::=은 "뭐뭐로 쓸 수 있다"는 뜻이다. 즉, expr는 뒤에 나오는 여러 가지로 변환될 수 있다는 거다. |는 "또 다른 선택지"를 의미한다. 즉, expr는 +로 시작하는 표현일 수도 있고, -로 시작하는 표현일 수도 있으며, 또는 그냥 숫자일 수도 ..
-
Semantics (의미론)에 대하여컴공지식/프로그래밍언어론 2024. 9. 7. 01:24
프로그래밍 언어에서 'Semantics'는 코드가 어떻게 의미를 갖는지, 즉 코드가 실제로 무엇을 하고 어떻게 동작하는지를 정의하는 거다.몇 가지 의미론을 살펴보자 Mathematical techniques (수학적 기법들) 일단 수학적 방법으로 프로그래밍 언어의 의미를 정의할 수 있는데, 그 대표적인 방법들은 다음과 같다.Denotational semantics (표상 의미론): 이건 프로그램의 각 부분을 수학적인 함수로 표현하는 방식이다. 즉, 코드가 어떤 입력을 받아서 어떤 출력을 내는지, 그 관계를 수학적으로 정의한다.Operational semantics (작동 의미론): 이건 프로그램이 실제로 어떻게 실행되는지를 설명하는 방식이다. 한 단계 한 단계의 실행 과정을 정의하는 거라고 보면 된다...
-
문법(Syntax)에 대하여컴공지식/프로그래밍언어론 2024. 9. 7. 01:16
문법에는 두 가지 타입이 있는데 구체적인(concrete) 문법과 추상적인(abstract) 문법이 있다. Concrete Syntax(구체적인 문법)은 코드가 실제로 어떻게 쓰이는지에 대한 거다.예를 들어 숫자 '3'과 '4'를 더할 때 여러 가지 표기법이 있다. Infix (중위 표기법) : 3 + 4 로 우리가 가장 익숙한 표기법이다. Postfix (후위 표기법) : 3 4 + 로 피연산자가 먼저 나오고 연산자가 나중에 나온다. 계산기 같은 데에서 쓰인다. Prefix (전위 표기법) : + 3 4 로 연산자가 먼저 나오고 피연산자가 그 뒤에 온다. Parenthesized prefix (괄호로 묶인 전위 표기법) : {+ 3 4} 로 전위 표기법에 괄호를 추가한 형태다. 내가 듣는 수업에서는..
-
프로그래밍 언어의 구성컴공지식/프로그래밍언어론 2024. 9. 7. 01:10
프로그래밍 언어는 다음과 같은 것들로 이루어져 있다. 특유의 문법(syntax) : 이건 그 언어가 어떻게 코드를 작성해야 하는지를 말한다. 문장 구조에 대한 규칙 그 문법에 따른 동작 : 언어마다 각 문법 요소가 어떻게 동작하는지 정해져 있다. 예를 들어, 조건문이 어떻게 실행되거나 함수가 어떻게 호출되는지 같은 거다. 유용한 라이브러리들 : 프로그래밍할 때 코드 재사용성을 높이기 위해 라이브러리들이 있다. 프로그래머들이 자주 쓰는 관용구(idioms) : 이건 그 언어를 쓰는 사람들이 자주 사용하는 특정한 코드 패턴을 말한다.
-
미디언 필터(Median Filter)란?컴공지식/컴퓨터비전 2024. 9. 6. 23:07
이 필터는 이미지 처리에서 주로 잡음 제거를 위해 사용된다. 미디언 값은 정렬된 데이터 세트에서 중앙에 위치한 값이다.3x3 이웃에서는 9개의 값 중 5번째로 큰 값이 미디언 값이다.5x5 이웃에서는 25개의 값 중 13번째로 큰 값이 미디언 값이다. 미디언 필터는 마스크 내의 픽셀 값을 정렬하여 미디언 값을 찾고, 마스크의 중앙 픽셀 값을 이 미디언 값으로 대체하는 방식이다.임펄스 노이즈(Salt-and-Pepper Noise) 같은 랜덤한 밝은 점이나 어두운 점이 있는 경우에도 효과적으로 노이즈를 제거한다.그러니까 이 필터의 중요한 점은 아주 작거나 아주 큰 값(노이즈)을 무시하고, 중간 값만을 선택함으로써 잡음이 제거되고 이미지가 부드러워진다는 것이다.