기본 콘텐츠로 건너뛰기

1월, 2018의 게시물 표시

[ML] 결정트리(Decision Tree) 모델

주가추정 결과

Kospi를 비롯한 몇가지 종목의 다음날의 추정치는 시가, 고가, 저가, 종가, 거래량 데이터를 기반으로 계산된 지표를 첨가하여 lasso 회귀모형을 기반으로 분석한 결과입니다.  이 추정결과는 다음 링크에서 확인할 수 있습니다. 각 달이 하나의 파일에 포함되면 각 spearsheet의 이름은 추정된 날짜를 나타냅니다. 또한 동일한 날짜에 "c"표시는 원 데이터를 실제 거래하는 가격의 간격에 따라 구분하여 분석한 결과입니다.  'wk'는 주간 추정치 입니다.  추정결과 

수치형 자료의 목록화_python

시가, 고가, 저가, 종가, 거래량으로 구성되어 있는 일일자료 중 종가를 기준으로 다음을 계산 1) (당일 - 전일)/전일 2) 일정한 구간으로 구분 3) 원자료와 결합 위 과정중 1)을 위해 사용자 정의 함수를 작성하여 사용 def InterRetS(da, inter=1):     ref=da.shift(inter)     re=(da-ref)/ref     re.columns=da.columns+"interRet"     return(re) 테스트를 위한 자료는 kodex leverge 일일자료를 사용 위 함수는 지정된 시차의 자료와 각 열 (각 변수)별로 위의 1)을 계산합니다. kl1.head(2) Out[13]:             Open  High   Low  Close    Volume 2016-01-04  9810  9815  9470   9490  31928370 2016-01-05  9420  9620  9400   9525  27896887 ret=InterRetS(kl1) ret.head(2) Out[14]:             OpeninterRet  HighinterRet  LowinterRet  CloseinterRet  \ 2016-01-04           NaN           NaN          NaN            NaN  2016-01-05     -0.039755     -0.019868    -0.007392       0.003688              VolumeinterRet  2016-01-04             NaN  2016-01-05       -0.126266  위에서 계산한 각 열의 값들의 목록화를 위해 구간을 지정합니다. 즉, nplinespace(sart, end, num=50) 함수를 사용하여 구간을 지정합니다. mn=ret.min() mn Out[18]: OpeninterRet   

array 벡터 구조의 변환_reshape, np.newaxis

numpy 객체 array 구조에서 기본은 행 즉, 열벡터입니다. 예를들어 다음과 같은 1차원 구조의 객체를 생성합니다. x1=np.random.randint(0, 10, 5) x1 Out[24]: array([3, 5, 0, 6, 7]) 객체 x1의 경우 행 또는 열로 이루어진 1차원 구조입니다.  array 객체에서 데이터의 우선적 배치는 행입니다. 즉, 1행을 채우고 다음으로 2행을 채우는 방법이지요. 사실 이 방법은 python에서 뿐만 아니라 다른 언어의 배열(행렬) 구조의 기본 배치방법입니다. 그러므로 위 객체는 5행인 1차원 구조로 열의 수는 정해지지 않습니다. 다른 언어에서는 이러한 경우 열은 자동으로 1로 지정되지만 numpy의 경우는 지정되지 않습니다. 다음과 같지요. x1.shape Out[25]: (5,) 이 경우 다른 객체와의 행렬곱 등 연산의 경우 서로의 차원의 mismatch로 에러가 유발됩니다. 그러므로 위의 결과 (5, ) 를 (5, 1)과 같이 열을 지정해 줄 필요가 있습니다. 이를 위해 np.reshape() 또는 np.newaxis를 사용합니다. np객체.reshape(행수, 열수) : 원 객체의 차원을 지정한 차원으로 전환합니다. x1.shape Out[25]: (5,) x2=x1.reshape(5,1) x2 Out[27]: array([[3],        [5],        [0],        [6],        [7]]) x2.shape Out[28]: (5, 1) np객체[:, np.newaxis] : 원객체의 새로운 축 하나를 첨가합니다. 이 경우는 열에 새로운 축을 첨가하는 것으로 결과적으로 열의 수가 1로 지정됩니다. np.newaxis를 행의 위치에 지정하면 원 객체의 행과 열이 전치됩니다. x2=x1[:, np.newaxis] x2 Out[30]: array([[3],        [5],        [0],        

분산-공분산 행렬

어떤 행렬의 열들 사이의 공분산을 계산하기 위해 사용할 수 있는 함수는 numpy.cov() pandas데이터프레임.cov() 가 있다. 그러나 numpy.cov()의 경우 두 객체들 사이의 공분산을 계산하고 그 이상의 차원에서는 엉뚱한 값들을 반환한다. >>> x                 Open      High       Low    Volume 2017-12-05  0.493023  0.648262  0.624396 -0.220359 2017-12-06  0.737391  1.452395  1.166491  0.200745 2017-12-07  1.877774  1.256265  0.499297  0.316586 2017-12-08  0.065379 -0.450067 -0.480642  0.635944 2017-12-11 -0.260445 -0.548132 -0.084496 -0.518430 2017-12-12 -0.138261 -0.626584 -0.105346 -1.072204 2017-12-13 -0.117897 -0.705036 -0.188745 -0.986260 2017-12-14 -0.525176 -0.116646 -0.147046 -0.465978 2017-12-15  0.594843  1.668138  1.249890  1.623176 2017-12-18  1.144670  0.785553  0.853744 -0.322070 2017-12-19  0.615207  0.177549  0.978842 -1.352655 2017-12-20  1.042850  1.177813  1.041392 -0.172654 2017-12-21  0.289383  0.334453  0.999692 -1.654738 2017-12-22  0.004287 -0.391228 -1.710780  2.694075 2017-12-26 -2.032111 -2.097560 -1.794179 -0.207932 201