목록2025/04 (19)
동산로의 블로그

Q-learningQ -learning은 강화학습의 일종입니다. 행동에 대해서 보상을 받을 때에, 보상을 가장 높게 만드는 방법을 찾는 알고리즘입니다. 상황 설명주어진 상태에서 에이전트는 행동을 할 수 있습니다. 행동에 따라서 상태가 변화되며, 각 행동에 따라서 보상\(\mathcal{R}\)을 얻을수 있습니다. 가장 직관적인 예시는 게임을 할 때에 컨트롤은 행동이고, 게임 상태는 상태, 점수가 보상인 것입니다. 알고리즘의 목표는 가장 높은 \(Q\)값을 주는 행동을 했을 때에 보상을 최대로 받도록 \(Q\)를 찾는 것 입니다.이론상 완벽한 \(Q\)가 있다면 모든 상황에서 가장 높은 \(Q\)를 만들어 주는 행동만 취하면 됩니다.\(Q\)는 주어진 상태 \(S\)에서 행동\(A\)를 했을 때에 그 행..
jupyter가 실행 중일 때에 pip를 사용하게 되면 가끔 library가 오류나게 됩니다. 이 경우 python을 완전히 삭제해야할 필요가 있습니다. 특히나 의존성 때문에 pip가 자동으로 다른 library를 다운그레이드 할 경우 발생합니다. 완전 깨끗하게 삭제하기 위해서는 파이썬 삭제를 수동으로 해야합니다. 여러번 해 본 결과, pip로 library를 삭제해도 완전히 삭제되지가 않습니다. 또한 제어판 혹은 python 설치프로그램을 통해서 python을 삭제할 수 있습니다. 하지만 이 경우에는 완전히 삭제가 되지 않습니다. 이 경우에는 수동제거가 확실합니다. 1. 제어판 - 프로그램 제거- 파이선 삭제 2. C:\Users\USER\AppData\Local\Programs의 python 폴더..
저는 평소에 matplotlib을 자주 사용합니다 .쉽고 빠르지만 가끔 뭔가 부족하다는 생각이 듭니다.matplotlib은 그림의 확장이나 변형이 불가능합니다. 상호작용하는 그래프 오브젝트가 아닌 그림을 그려주는 라이브러리이기 때문입니다. 스케일을 바꾸거나 보는 방향을 바꾸는 등의 상호작용이 불가능합니다. Plotly를 사용하면 상호작용이 가능한 그래프를 만들 수 있습니다. plotly는 파이썬 뿐만 아니라 javascript으로도 사용가능합니다. 이 기능을 활용하면 python에서 그린 그래프를 웹페이지로 들고오는 것도 가능합니다. (혹은 javascript에서 직접 그릴 수도 있습니다. ) 마우스호버링, 확대 축소, 방향 전환 등의 여러가지 상호작용이 가능합니다. 간단하게 만든 iris 그래프를 티스..
SOLID 원칙은 객체지향디자인을 할 때에 이해성, 유연성, 유지보수성을 위해서 고안된 원칙입니다. 유지보수 하고 확장하고 디버깅하기 쉬워집니다. Rober C. Martin (a.k.a Uncle Bob)에 의해서 고안되었습니다.다섯가지의 SOLID 원칙은 5개로 이루어져 있으며, 각각의 이니셜을 따서 이름이 붙었습니다.1. S - Single Responsibility Principle2. O - Open/Closed Principle3. L - Liskov Substitution Principle4. I - Interface Segregation Principle5. D - Dependency Inversion PrincipleSingle Responsibility Principle(SRP)단일 책..
OOAD(Object Oriented Analysis and Design)의 방법론에 대해서 정리해보자.Object-Oriented Analysis와 Object-Oriented Design 둘 다를 통칭하는 말 입니다. OOAD는 어떻게 객체지향프로그램을 통해서 어플리케이션, 시스템, 비즈니스를 분석하고 디자인을 할 수 있을 지에 대한 기술적인 접근입니다.이 글에서는 RDD(Wirfs-Brock), OMT(Rumbaugh), Booch method, Jacbson(OOSE) 그리고 Coad/Yourdon의 방법론에 대해서 정리하겠습니다. 다만 미리 알아두셔야 할 점은 이 방법론들은 UML이 등장하기 전 혹은 등장할 때 쯤에 나온 개념들 입니다. 특히 그 중 3명 Rumbaugh, Jacobson, Bo..
dataframe은 pandas 라이브러리에서 제공하는 데이터 구조입니다. 테이블로 구성된 데이터를 다루는데 적합합니다. 사용하기 편하기 때문에 많이 사용됩니다.2차원 테이블은 pandas.DataFrame이고 1차원 열은 pandas.Series를 사용합니다. 실질적으로 DataFrame은 같은 인덱스를 가지는 Series의 집합이라고 보면 됩니다.데이터 접근__getitem__ ( 혹은 [] )하나의 열 이름을 입력하면 시리즈가 반환되고, 열 이름의 리스트를 입력하면 데이터 프레임이 반환됩니다.# Series를 반환 df['column_name']# DataFrame을 반환df[['col1','col2']]>>> data['CRIM'].info()RangeIndex: 526 entries, 0 to ..
여타 다른 언어들(java, cpp)등과 같이 파이썬에서도 오류 제어를 위한 키워드(keywords)들이 있습니다.try, except, finally, raise 입니다.파이썬 문법에 맞게{} 대신에 들여쓰기와 콜론:을 사용해서 표시합니다.trytry: result = 10/0except ZeroDivisionError: print("Cannot divide by zero")try문 속에 오류가 발생하면 해당 오류는 클래스가 되어서 except문으로 넘어가게 됩니다. 이 때 except에서 각각 맞는 클래스에 대해서 오류를 처리합니다. 여러가지의 오류를 받을 수 있도록 괄호로 표기할 수도 있습니다. 인스턴스를 받아서 처리할려면 as를 통해서 가능합니다.try: x = int("abc..
오버라이딩은 객체지향 프로그래밍(OOP, Object-Oriented Programming)의 개념 중 하나입니다. 자식 클래스(child class, subclass)가 부모 클래스(parent class, superclass)의 메소드를 덮어쓰는 것 입니다.부모 클래스의 메소드와 같은 이름, 시그니처(이름, 매개변수, 리턴 타입)를 가진 메소드를 새로 정의하는 것을 뜻 합니다. 상속 받은 성질을 알맞게 수정하거나 확장할 때에 사용합니다.class Animal: def speak(self): return "Some sound"class Dog(Animal): def speak(self): # This overrides Animal.speak return "Woof"..