목표
1. 크롤링을 통해 네이버 금융주가 주가 가져오기
2. 머신러닝알고리즘을 적용해 주가 예측 모델 만들기
3. 성능 좋은 모델을 만들기
2-1. 분류를 통한 주가 등락 예측
지난시간에는 KNeighborsRegressor와 LinearRegression를 통해 주가 예측을 살펴 보았다. 강의주제의 저자 말로는 일일주가변동폭이 크지 않기 때문에, 주가 예측율이 99%이긴 하지만 , 실제로 등락폭 예측이 더 좋은 방법이라 한다.
엑셀의 주가데이터를 df 데이터로 다시 읽어 오기
df = pd.read_excel('samsung.xlsx')
df
분류를 통해 주가 등락 예측을 해보자. 내일 주가의 등락여부를 판별해보자
data = df[['종가','시가','고가','저가','거래량']]
data
주가 오르면 1 떨어지면 0 으로 전처리를 해보자.
for i in range(len(data) -1):
print(data.iloc[i])
list로 표현해보자
for i in range(len(data) -1):
print(list(data.iloc[i]))
피처와 타겟을 만들어 보자. 전일 종가보다 더 높으면 1, 낮으면 0으로 구분하여 target 을 만들어 보자.
x = []
y = []
for i in range(len(data)-1):
sample = list(data.iloc[i])
x.append(sample)
if sample[0] < list(data.iloc[i+1])[0]:
y.append(1)
else:
y.append(0)
원할한 모델 학습을 위해 행렬처리를 한다.
1. 데이터를 어레이로 변경(행렬처리)
2. train, test set 분류
3. 표준화 수행(scalling)
x = np.array(x)
y = np.array(y)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
mean = np.mean(x, axis=0)
std = np.mean(x, axis=0)
train_scaled = (x_train - mean) / std
test_scaled = (x_test - mean) / std
4. K-최근접이웃 분류모델을 통해 분류 수행
from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier()
model.fit(train_scaled, y_train)
model.score(test_scaled, y_test)
그다지 정확도가 좋지 않다. 약 50% 정도
5. K-최근접이웃의 갯수를 변경해서 튜닝해보자
from sklearn.neighbors import KNeighborsClassifier
for n in range(1, 20):
model = KNeighborsClassifier(n_neighbors=n)
model.fit(train_scaled, y_train)
print(n, model.score(test_scaled, y_test))
52%까지 보이기는 하지 않아 그닥 개선의 여지가 없다. 주가는 변수가 많아 기대하는 만큼의 예측력이 어렵다. 패턴과 이슈에 영향을 미치기 때문이다. 너무 맹신하면 안된다.
반응형
'백엔드 프레임워크 & 언어 > Python' 카테고리의 다른 글
Selenium을 활용한 웹 브라우저 테스트 자동화 (0) | 2023.07.12 |
---|---|
[프로젝트]성능개선-파이썬 머신러닝을 통한 삼성전자 주가 예측(12) (0) | 2023.07.10 |
[프로젝트]데이터분석-머신러닝을 통한 삼성전자 주가 예측(9) (0) | 2023.07.10 |
[프로젝트]데이터수집-머신러닝을 통한 삼성전자 주가 예측(8) (0) | 2023.07.09 |
[프로젝트]데이터수집-머신러닝을 통한 삼성전자 주가 예측(7) (0) | 2023.07.09 |