달력

2

« 2020/2 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 1


 

 

 

 

추상클래스(abstract class) 형식

·       추상클래스는 {abc} 내장 패키지에서 기본이 되는 ABCMeta라는 Abstract Base Classe Meta클래스와 abstractmethod 인디케이터를 임포트해야 합니다.

·       추상클래스명에는 metaclass=ABCMeta 인자 옵션으로 주고 추상메소드에는  @abstractmethod 장식자(어노테이션) 붙여줍니다.

 

 

# Metaclass for defining Abstract Base Classes 임포트

from abc import ABCMeta

 

# A decorator indicating abstract methods 임포트

from abc import abstractmethod

 

 

# 추상 클래스 정의

class 추상클래스명(metaclass=ABCMeta):

   

    def __init__(self):

        pass

   

    @abstractmethod

    def 추상메소드1(self):

        pass

 

    @abstractmethod

    def 추상메소드2(self):

        pass

 

 

 

자식 클래스에서 추상클래스의 추상메소드를 재정의하지 않은 경우 자식클래스의 객체 생성시 아래와 같은 Error 발생합니다.

TypeError: Can't instantiate abstract class SmartCalculator with abstract methods sub

 

 


Posted by codedragon codedragon

댓글을 달아 주세요



 

 

 

 

정보 시각화 방법

현재 가장 많이 사용되고 있는 차트와 그래프들을 시각화 방법별로 구분한 것입니다.

구분

시각화 방법

시간 시각화

·         막대 그래프

·         누적 막대 그래프

·         산점도

·         그래프

·         계단식 그래프

·         영역 차트

분포 시각화

·         파이 차트

·         도우넛 차트

·         누적 막대 그래프

·         트리맵

·         누적 영역 차트

관계 시각화

·         산점도

·         산점도 행렬

·         버블 차트

·         히스토그램

비교 시각화

·         막대 그래프

·         히트맵

·         평행 좌표계

·         스타 차트

·         체르노프 페이스

공간 시각화

·         지도 매핑

·         등치지역도

·         도트 플롯맵

·         버블 플롯맵

·         등치선도

·         입자 흐름도

·         카토그램

 

https://codedragon.tistory.com/9720

 

 

 

 


 

 

R 코드 예시

나라별 메달 현황을 그래프로 시각화한 코드 예시입니다.

 

 

# 데이터 불러오기

> olympic<- read.csv("Medal.csv", sep=",", header=TRUE)

 

# 데이터 확인

> olympic

 

# 나라별 메달 데이터 확인

> olympic$대한민국

> olympic$일본

> olympic$이탈리아

 

# 나라별 바그래프 출력

> barplot(olympic$대한민국)

> barplot(olympic$일본)

> barplot(olympic$이탈리아)

 

# 모든 나라의 바 그래프 출력

> barplot(as.matrix(olympic),main = "금메달수",ylab="수량",
+         beside=T,col=rainbow(3),ylim=c(0,50))

 

# 범례 추가

> legend(35,40,c("","",""),cex=0.8,fill=rainbow(3))

  

https://codedragon.tistory.com/10042


 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

Python 접근 제한자 (Access Modifier)

·       Python은 다른 언어에서 흔히 사용하는 public, protected, private 등의 접근 제한자 (Access Modifier)를 갖지 않습니다.

·       Python 클래스는 기본적으로 모든 멤버가 public 됩니다.

·       Python 코딩 관례(Convention)상 내부적으로만 사용하는 변수 혹은 메서드는 그 이름 앞에 하나의 밑줄 하나(_) 을 붙입니다. 하지만 이는 코딩 관례에 따른 것일 뿐 실제 밑줄 하나를 사용한 멤버도 public 이므로 필요하면 외부에서 엑세스할 수 있습니다.

·       특정 변수명이나 메서드를 private으로 만들어야 한다면 두개의 밑줄(__)을 이름 앞에 붙이면 됩니다.

 

def __init__(self, width, height):

    self.width = width

    self.height = height

 

    # private 변수 __size

    self.__size = width * height

 

# private 메서드

def __internalFunc(self):

    pass

 

 

구분

선언

설명

self.width

-

·       public

·       외부에서 접근 가능

self._width

밑줄 하나(_)

·       public

·       내부 사용 용도로 표시 (protected)

·       외부에서 접근 가능

self.__width

두개의 밑줄(__)

·       private

·       외부에서 접근 불가능

·       외부접근시 AttributeError 발생

 

 

private 멤버를 외부에서 접근할 경우 Error 발생합니다.

 AttributeError: 'Xxxxxx' object has no attribute '__xxxxx'

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

파이썬에서 객체의 attribute를 탐색하는 단계

 

단계

설명

1

현재 객체에서 attribute를 찾습니다.

2

현재 객체의 소속 클래스에서 찾습니다.

3

상위 Base 클래스(부모클래스)에서 찾습니다.

4

에러(Error)를 발생시킵니다.

 

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

클래스 변수(class variable)

·       클래스 정의에서 메서드 밖에 존재하는 변수를 클래스 변수(class variable)라 하며, 클래스 변수는 해당 클래스를 사용하는 모두에게 공용으로 사용되는 변수입니다.

·       클래스 변수는 클래스 내외부에서 "클래스명.변수명" 으로 엑세스 할 수 있습니다.

 

구분

호출

클래스 에서 호출

클래스명.변수명

클래스 에서 호출

클래스명.변수명

 


 

 

인스턴스 변수(instance variable)

·       하나의 클래스로부터 여러개의 객체 인스턴스를 생성해서 사용할 수 있습니다.

·       클래스 변수가 하나의 클래스에 하나만 존재하는 반면, 인스턴스 변수는 각 객체 인스턴스마다 별도로 존재합니다.

·       클래스 정의에서 메서드 안에서 사용되면서 "self.변수명"처럼 사용되는 변수를 인스턴스 변수(instance variable)라고 하는데, 이는 각 객체별로 서로 다른 값을 갖는 변수입니다.

·       인스턴스 변수는 클래스 내부에서는 self.인스턴스변수명과 같이 "self." 을 사용하여 엑세스하고, 클래스 밖에서는 "객체변수.인스턴스변수명"와 같이 엑세스 합니다.

 

구분

호출

클래스 에서 호출

self.인스턴스변수명

클래스 에서 호출

객체변수.인스턴스변수명

 

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

 

이름 공간 검색 순서

·       "인스턴스 이름.멤버 이름"으로 멤버를 참조할 때 멤버의 검색 순서입니다.

·       기본적으로 인스턴스 객체를 통하여 변수나 함수의 이름을 찾는 경우 아래와 같은 검색 순서를 가집니다.

·       순서대로 찾지 못할 경우 AttributeError 가 발생됩니다.

 

순서

이름 공간 영역

1

·       인스턴스 객체 영역

·       인스턴스 멤버

2

·       클래스 객체 영역

·       클래스 멤버

3

·       전역 영역

 

 


Posted by codedragon codedragon

댓글을 달아 주세요

2020. 2. 17. 17:27

이름 공간 Development/Python


 

이름 공간

클래스 객체과 인스턴스 객체의 이름공간은 다릅니다.

 

 

 

 

 

클래스 멤버 vs 인스턴스 멤버

구분

차이

클래스 멤버

·       클래스 이름 공간에 생성됩니다.

·       모든 인스턴스들에 의해 공유됩니다.

인스턴스 멤버

·       인스턴스 이름 공간에 생성됩니다.

·       각각의 인스턴스 마다 독립성이 보장됩니다.

 

 

 

 


'Development > Python' 카테고리의 다른 글

클래스 변수(class variable), 인스턴스 변수(instance variable)  (0) 2020.02.17
이름 공간 검색 순서  (0) 2020.02.17
이름 공간  (0) 2020.02.17
클래스와 인스턴스  (0) 2020.02.17
weakref 정보 확인  (0) 2020.02.16
weakref.proxy()  (0) 2020.02.16
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

클래스와 인스턴스

·       일반적으로 클래스는 멤버변수 멤버메소드 가지고 있습니다.

·       클래스를 정의하면 클래스 객체(class object) 생성되고 독립적인 이름공간이 만들어 집니다. 이름공간안에 멤버변수와 멤버메소드가 존재하게 됩니다.

 

·       클래스를 사용하기위해서는 인스턴스 객체(instance object) 만들어야 합니다.

·       클래스명을 함수형태로 호출하여 인스턴스 객체가 생성되고 독립적인 이름공간이 만들어 지게 됩니다. 기본적으로 인스턴스 객체가 변경되기 전까지는  클래스 객체와 동일한 데이터와 메소드를 가집니다.

 

 


 

 

 

 

 


'Development > Python' 카테고리의 다른 글

이름 공간 검색 순서  (0) 2020.02.17
이름 공간  (0) 2020.02.17
클래스와 인스턴스  (0) 2020.02.17
weakref 정보 확인  (0) 2020.02.16
weakref.proxy()  (0) 2020.02.16
weakref.ref()  (0) 2020.02.16
Posted by codedragon codedragon

댓글을 달아 주세요



 

 

게슈탈트 원리(The Gestalt Principles of Visual Perception)

 

법칙

설명

유사성의 법칙

(Low of Similarity)

유사한 요소(형태, , 크기, 밝기)끼리 그룹 지어 하나의 패턴으로 보이게 합니다.

근접성의 법칙

(Low of Proximity)

시공간적으로 서로 가까이 있는 것들을 함께 집단화하여 봅니다.

단순성의 법칙

(Law of Simplicity)

주어진 조건으로 최대한 가장 단순한 쪽으로 인식합니다.

연속성의 법칙

(Law of Continuity)

요소들이 부드러운 연속을 따라 함께 묶여 지각됩니다.

폐쇄성의 법칙

(Law of Closure)

기존의 지식을 토대로 완성되지 않은 형태를 완성해 인지합니다.

 

https://codedragon.tistory.com/10091

 

 

 

 

 

 

인터랙션 구현 방식

구현방식

설명

강조하고 디테일을 보여주는 방식

마우스 움직임에 따라 반응하며 강조되도록 구현하는 방식입니다.

사용자가 콘텐츠를 선택하는 방식

데이터 변환 컨트롤을 이용하여 사용자가 필요한 데이터를 선택하여 시각화할 있게 하는 방식입니다.

사용자에 의한 시각 맵핑 변화 방식

사용자가 시각화 유형을 지정할 있도록 시각 데이터 재맵핑을 지원하여 시각화 크기를 극대화하는 방식입니다.

사용자 관점과 의견이 반영되는 방식

사용자의 주관적인 관점과 데이터 표현을 혼합하여 시각화하는 방식으로 사용자 반응 프로세스가 가장 중요한 부분입니다.

 

https://codedragon.tistory.com/9934

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

 

모델의 복잡성에 따른 오류 발생 빈도

·       모델의 복잡성이 높을수록 훈련 데이터에 대해서는 오류가 적어집니다.

·       실제 데이터에 대해서 일정 수준 이상의 복잡성은 오류를 증가시킵니다.

·       그러므로 정확한 모델을 생성하기 위해서는 복잡성을 적절한 수준으로 유지할 필요가 있습니다.

·       Let model simpler by giving more bias and less variance

·       적절한 복잡성 수준이 넘어간 것은 과적합으로 있습니다.

 



Posted by codedragon codedragon

댓글을 달아 주세요