SVM 조정 주식 예측
동기 업데이트
지난 블 로 그 는 SVM 의 알고리즘 정 수 를 설명 했다. 이 블 로 그 는 한 번 시도 해 보 았 는데 주요 내용 은 다음 과 같다. 1) SVM 분 류 를 이용 하여 상기 지수의 등락 을 예측 하 는 것 이다.2) SVM 조 참 을 시험 해 본다.
상하 이 증권거래소 의 등락 을 예측 하 다.
문제 설명
주식 등락 을 예측 하 는 것 과 지수의 등락 을 예측 하 는 원 리 는 똑 같 으 며, 모두 '역사적 데이터' 를 이용 해 미래의 흐름 을 추정 하 는 것 이다.주식 데 이 터 는 단순히 시간 서열 이다.여기 서 우 리 는 분류 방법 을 이용 하여 예측 모델 을 구축한다.
x_train
를 구축 하고 일부 데 이 터 를 테스트 집합 (test dataset) y_train
: 거래 일 당일 의 종가 가 지난 거래 일의 종가 보다 높 으 면 '+' 데이터 이 고 '+ 1' 이 라 고 표시 되 며 그렇지 않 으 면 '- 1' 여기 서 주의해 야 할 것 은
x_train
와 y_train
의 대응 관 계 는 적어도 한 거래 일의 시간 차 가 있어 야 한 다 는 것 이다. 그렇지 않 으 면 모델 은 의미 가 없 을 것 이다.코드 를 쓰다
생각 이 나 면 코드 를 쓰 는 것 이 간단 합 니 다. 여기 서 우 광 에 있 는 SVM 코드 를 참고 하 였 습 니 다.코드 의 가장 중요 한 부분 은 데이터 처리 부분 입 니 다. 다음 과 같 습 니 다. (소스 코드 를 클릭 하면 완전한 소스 파일 을 볼 수 있 습 니 다)
Tips: github 에서 ipython notebook 을 직접 볼 수 없다 면 보 려 는 파일 의 URL 을 복사 해서 들 어가 면 볼 수 있 습 니 다.
for index in range(2,len(close_pri)):
# [-2]
sma_data = talib.SMA(close_pri[:index],timeperiod=7)[-2]
wma_data = talib.WMA(close_pri[:index],timeperiod=7)[-2]
mom_data = talib.MOM(close_pri[:index],timeperiod=7)[-2]
features = []
features.append(sma_data)
features.append(wma_data)
features.append(mom_data)
x_train.append(features)
# , 1, -1
if close_pri[index-1] < close_pri[index]:
label = 1
else:
label = -1
y_train.append(label)
SVM 인삼
이 를 예 로 들 어 서로 다른 매개 변수 가 얻 은 분류 결 과 를 테스트 한 결과 모델 의 일반화 능력 에 어떤 영향 을 미 칠 지 예측 할 계획 이 었 으 나 매개 변수 sklearn 에서 svm 분류 알고리즘 의 매개 변수 소개 로 바 뀌 었 다.
우선 sklearn 에서 svm 분류 문제 에 대한 목표 함수 / loss 를 살 펴 보 겠 습 니 다.
sklearn
에서 제 시 된 svc 공식 은 다음 과 같다. 상기 문장의 식 (18) 을 비교 하면 여기 있 는 매개 변수 C 는 식 (18) 의 역수 임 을 알 수 있다.여기 서 반 연 문제 와 유사 한 정규 화 방법 을 이해 하면 전체 목표 함 수 는 벌 함수 / penalty function 으로 볼 수 있 고 C 는 벌칙 인자 로 볼 수 있다.그러면 C 가 클 수록 벌칙 항목 이 작 다 는 뜻 이다. the vise versa 는 분류 가 정확 할 수록 거리 가 가장 큰 지 조금 잃 어 버 리 는 것 이 중요 하지 않다 는 뜻 이다.C 가 정 무한 이 라면 분류 가 정확 해 야 가장 중요 하 다 고 상상 할 수 있다. gutter 의 너 비 는 이미 중요 하지 않 고 이때 의 모델 은 반드시 적합 할 것 이다.이렇게 되면 분석 해 야 할 매개 변 수 는 핵 함수 의 매개 변수 밖 에 없다.sklearn 공식 인 자 는 다음 과 같 습 니 다 (어, 이렇게 많아,). 다음은 몇 가지 중요 한 것 을 골 라 보 겠 습 니 다.
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',
max_iter=-1, probability=False, random_state=None, shrinking=True,
tol=0.001, verbose=False)
decision_function_shape
: 'ovo' OR 'ovr' 는 여러 가지 분류 문제 에 대해 ovo 는 두 가 지 를 분류 하 는 것 을 나타 낸다. ovr 는 그 중의 한 가지 유형 과 다른 모든 것 을 분류 하 는 것 degree
은 바로 여러 가지 핵 함수 중의 degree max_iter
이다. 최대 교체 횟수 는 SMO 알고리즘 tol
에 대해 교체 할 때 종료 조건 이 있 는 gamma
: rbf 핵 함수 의 매개 변 수 는 gamma 가 클 수록정밀도 가 높 을 수록 고 스 함수 가 높 고 마 르 기 때 문 입 니 다.과 의합 도 심각 해 집 니 다. 따라서 고 스 핵 도 정 해 지지 않 은 분류 라면 svm 을 사용 하지 마 세 요.설치
ta - lib 를 설치 할 때 약간의 구 덩이 를 만 났 습 니 다. 기록 하 세 요.
공식 ta - lib 의 방법 에 따라 먼저 의존 도 를 설치 합 니 다.
wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
tar -vxf ta-lib-0.4.0-src.tar.gz
cd ta-lib/
./configure --prefix=/usr # lib
시험 해 보기:
ipython3
In [1]: import talib
In [2]:
가 져 오기 모듈 오류:
libta_lib.so.0: cannot open shared object file: No such file or directory
는 /usr/lib/
의 라 이브 러 리 파일 이 시스템 환경 변수 에 불 러 오지 않 아서 모듈 을 가 져 올 때 라 이브 러 리 파일 libta_lib.so.0
을 찾 지 못 하고 환경 변 수 를 추가 하면 됩 니 다.echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib' >> ~/.bashrc
총결산
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.