반응형

기대값

E라는 기호가 보이면 기대값이란 의미이고, 평균이라고 생각하면 된다.

unbiased 인 경우는 일반적인 평균 구하듯이 더해서 n으로 나누면 되는데..

각각의 이벤트가 일어날 확률이 다른 경우는 다음처럼 다소 복잡해 보이는 정의가 되...지만 그리 어려울 것은 없다.

표본공간

표본공간은 종종 S, Ω 또는 U로 표기되며, 실험 또는 임의 시도의 모든 가능한 산출들의 집합이다.

예를 들어, 동전을 던지는 실험에서 표본 공간은 {앞면, 뒷면}이다. 6면 주사위를 던지는 실험에서 표본 공간은 {1, 2, 3, 4, 5, 6}이다.

확률공간 probability space

전체 측도가 1인 측도 공간 ( P(S) = 1 이라는 의미인듯 )

(S, B, P)

S : 표본 공간

B : S의 부분집합으로 이루어진 시그마 필드, 아래 확률 함수의 정의역이 된다. 각 원소를 사건(event)라고 부른다.

P : B에서 정의된 확률 함수... 즉 B의 치역이 되며 범위는 [0, 1]이다. B의 각 원소별로 확률을 구해놓은걸 말하는듯

왜 확률공간의 정의역 B를 시그마필드로 하는지는 아래 링크 참조..

http://hanmaths.tistory.com/56

시그마 필드(가측 공간)

sigma-algebra, σ-field, sigma-field, measurable space 대 비슷한 말...

σ-field (sigma field)는는 공집합이 아니면서 가산번의 합집합, 가산번의 교집합, 그리고 여집합에 대해 닫혀있는 집합 Sㅇ의 부분집합의 모임을 뜻한다.

그러니깐 원래 S의 부분집합을 모아놓은 것이면서, 원소끼리 합집합, 교집합, 여집합을 해도 닫혀있으면 필드라는 것

아래 주사위 예에서 보면 {짝수}, {홀수}를 합집합하면 S전체집합 나오고 교집합하면 공집합 나오는데 그것들도 다 원소로 포함되어 있으니 필드라고 하는 것

필드와 시그마 필드 차이는 유한번 연산이냐 가산번 연산이냐인데 내가 관심있는 범위내에서는 크게 중요하지 않은것 같다.

예를들어 주사위를 던져 짝수냐 홀수냐를 가리는 경우라고 했을 때

그때의 확률 공간 (S, B, P)는

S = {1, 2, 3, 4, 5, 6}

B = {φ,S,{짝수},{홀수}}

P : P(φ)=0. P(S)=1, P({짝수})=1/2, P({홀수})=1/2

분산

위에 E(기대값)랑 X(확률변수)를 이해하고 나면 드디어 분산의 다음 정의를 이해할 수 있다.

\[ \begin{align} \operatorname{Var}(X) &= \operatorname{E}\left[(X - \operatorname{E}[X])^2\right] \\ \end{align} \]

관측값과 평균의 차이를 제곱한 값을 평균낸 것.

평균값의 선형성으로부터 다음과 같은 식을 얻을 수 있다.

\[ \begin{align} \operatorname{Var}(X) &= \operatorname{E}\left[(X - \operatorname{E}[X])^2\right] \\ &= \operatorname{E}\left[X^2 - 2X\operatorname{E}[X] + (\operatorname{E}[X])^2\right] \\ &= \operatorname{E}\left[X^2\right] - 2\operatorname{E}[X]\operatorname{E}[X] + (\operatorname{E}[X])^2 \\ &= \operatorname{E}\left[X^2 \right] - (\operatorname{E}[X])^2 \end{align} \]

이 식은 실제로 분산을 구할 때 자주 사용된다.

표준편차

간단 정의

표준편차는 $\sigma$로 표시하고 $\sqrt{분산}$ 이다.

정의

일반적으로 모집단의 표준편차는 $\sigma(시그마)$로, 표본의 표준편차는 S(에스)로 나타낸다.

확률변수 X의 표준 편차 $\sigma$ 는

$\sigma = \sqrt{\operatorname{E}(X-\operatorname{E}(X))^2} = \sqrt{\operatorname{E}(X^2) - (\operatorname{E}(X))^2}$

공분산

2개의 변수에 대한 공통분산이라는 의미로

실수값을 지니는 2개의 확률변수 X와 Y에 대해서 각 기대값(평균)이 다음과 같을때

$E(X)=\mu,E(Y)=\nu$

공분산은 아래와 같이 나타낼 수 있다.

$\operatorname{Cov}(X, Y) = \operatorname{E}((X - \mu) (Y - \nu))$

상관계수

위의 공분산 정의로 부터 상관계수는 다음과 같이 정의한다.

\[ \begin{align} \rho_{X,Y}= \frac{\operatorname{cov}(X,Y)}{\sigma_X \sigma_Y} \end{align} \]

$ \operatorname{cov}$ 는 공분산

$ \sigma_X $ 는 확률변수 X의 표준편차

공분산이 각 변량의 단위에 의존하게되어 변동 크기량이 모호하므로,공분산에다가 각 변량의 표준편차를 나누어주어 `정규화`시킴

-1보다 크거나 같고 1보다 작거나 같다.

반응형
반응형

아무처리 안해도 화면 돌아가는데 반응은 한다. 그런데 매번 Activity의 onCreate()가 다시 불리는 구조.

만약 onCreate()가 매번 불리는게 싫다면 여기 참조

화면 전환 이벤트를 처리하고 싶다면 onConfigurationChanged()를 overide하면 되는데 여기 참조

단!, 위 링크대로 하면 onConfigurationChanged()가 안불리고, 여기에 있는대로 API level 13이상에서는 screenSize를 추가 해줘야 한다.

원래는 landscape용 화면 xml을 별도로 만들어 주면 좋다.

여기 참조

소스코드 상에서 현재의 orientation을 알아오는데는 다음처럼 하면된다.

(상수값을 직접 만들어 써야해서 조금 지저분 하다.)

(참고로 ORIENTATION_180으로는 핸드폰 돌려도 들어오지 않았다.)


final int ORIENTATION_0 = 0;
final int ORIENTATION_90 = 1;
final int ORIENTATION_180 = 2;
final int ORIENTATION_270 = 3;

Display display = ((WindowManager)mc.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int orientation = display.getRotation();
switch (orientation)
{
  default:
  case ORIENTATION_0: // Portrait
    //dostuff
	  System.out.println("orientation ORIENTATION_0");
    break;
  case ORIENTATION_90: // Landscape left
    //do stuff
	  System.out.println("orientation ORIENTATION_90");
    break;
  case ORIENTATION_180: // Upside down.
    //do stuff
	  System.out.println("orientation ORIENTATION_180");
    break;
  case ORIENTATION_270: // Landscape right
    //do stuff
	  System.out.println("orientation ORIENTATION_270");
    break;
}

참조할 만한 링크는 여기 이다.

emulator

AVD(emulator) portrait/landscape 전환 : Ctrl + F11

근데 2.3이나 4.4버전의 경우는 화면 전환시 버그가 있다고 한다. (나도 경험)

여기

반응형
반응형

descriptor

> __get__, __set__, and __delete__. If any of those methods are defined for an object, it is said to be a descriptor.

> descriptors only work for new style objects and classes.

__get__, __set__ 둘다 가진넘을 data descriptor라고 하고,

__get__ 하나만 가진넘은 non-data descriptor라고 한다.


class RevealAccess(object):
    """A data descriptor that sets and returns values
       normally and prints a message logging their access.
    """

    def __init__(self, initval=None, name='var'):
        self.val = initval
        self.name = name

    def __get__(self, obj, objtype):
        print 'Retrieving', self.name
        return self.val

    def __set__(self, obj, val):
        print 'Updating' , self.name
        self.val = val

>>> class MyClass(object):
    x = RevealAccess(10, 'var "x"')
    y = 5

>>> m = MyClass()
>>> m.x
Retrieving var "x"
10
>>> m.x = 20
Updating var "x"
>>> m.x
Retrieving var "x"
20
>>> m.y
5

위 예제보면 별것도 아니네..

그냥 클래스 멥버variable접근할때 함수불리게 해서 추가동작 할 수 있는걸로 보인다.

(decorator랑도 비슷?)

근데 여러가지 파이선 기능 구현할때 이 기능을 사용해서 구현했다는거 같다.

> Descriptors are a powerful, general purpose protocol. They are the mechanism behind properties, methods, static methods, class methods, and super(). They are used used throughout Python itself to implement the new style classes introduced in version 2.2. Descriptors simplify the underlying C-code and offer a flexible set of new tools for everyday Python programs.

반응형

+ Recent posts