파이썬으로 머신러닝 배우기!
이번에는 삼성전자 주가, 현대 자동차 주가, LG화학 주가와 KOSPI 주가의 상관관계를 분석해보려한다.
우선 데이터는 yahoo finance에서 1년치 데이터를 각각 다운받았고 장 마감 금액만으로 분석을 진행하였다.
finance.yahoo.com/quote/%5EKS11?p=%5EKS11
정리한 엑셀파일도 올려본다.
1. 이제 삼성전자 주가가 KOSPI 인덱스 주가에 영향을 얼마나 끼치는지 살펴보자!
import pandas as pd
import openpyxl
import matplotlib.pyplot as plot
import sklearn
plot.rcParams["font.family"] = 'Malgun gothic'
data = pd.read_excel("stock.xlsx", header=0)
newData = data[['SAMSUNG', 'HYUNDAI', 'LG', 'KOSPI']]
#속성(변수) 선택
x = newData[['SAMSUNG']]
y = newData[['KOSPI']]
from sklearn.linear_model import LinearRegression
#단순 회귀 모델 생성
model = LinearRegression()
model.fit(x, y)
#예측 모델 생성
y_p = model.predict(x)
#가중치와 y절편 출력
print('가중치 a : ', model.coef_)
print('y절편 : ', model.intercept_)
#결정계수
relation_square = model.score(x, y)
print('결정계수 : ', relation_square)
import seaborn as sns
ax1 = sns.distplot(y, hist = False, label = 'y실제')
ax2 = sns.distplot(y_p, hist = False, label = 'y예측')
plot.show()
#seaborn으로 출력
#plot.scatter(x['kor'], y, marker = '+')
#plot.scatter(x['kor'], y_p, marker = 'o')
#plot.figure(figsize=(10,5))
#plot.show()
KOSPI = 0.03 * 삼성전자 + 529.83 으로 나왔고
결정계수는 0.971로 매우 높다.
그래프만 봐도 예측모델과 실제 그래프가 꽤 비슷하다는 것을 볼 수 있다.
2. 이번에는 현대자동차와 KOSPI의 상관 관계를 살펴보자!
0.007 * 현대자동차 + 1264.78 = KOPI 라는 식이 나왔고
결정계수는 0.911로 삼성전자보다는 낮다.
3. LG화학과 KOSPI의 관계를 살펴보자.
0.001 * LG화학 + 1174.387 = KOSPI 라는 식이 나오고
결정계수는 0.894로 3개의 주가 중 가장 관련성이 낮았다.
4. 이번에는 3개의 종목과 KOSPI와의 상관관계를 살펴보자.
먼저 1차식으로 구해보았다.
import pandas as pd
import openpyxl
import matplotlib.pyplot as plot
import sklearn
plot.rcParams["font.family"] = 'Malgun gothic'
data = pd.read_excel("stock.xlsx", header=0)
newData = data[['SAMSUNG', 'HYUNDAI', 'LG', 'KOSPI']]
#속성(변수) 선택
x = newData[['SAMSUNG','HYUNDAI', 'LG']]
y = newData[['KOSPI']]
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree = 1) #1차항 적용
x_poly = poly.fit_transform(x)
#단순 회귀 모델 생성
model = LinearRegression()
model.fit(x_poly, y)
#예측 모델 생성
y_p = model.predict(x_poly)
#가중치와 y절편 출력
print('가중치 a : ', model.coef_)
print('y절편 : ', model.intercept_)
#결정계수
relation_square = model.score(x_poly, y)
print('결정계수 : ', relation_square)
import seaborn as sns
ax1 = sns.distplot(y, hist = False, label = 'y실제')
ax2 = sns.distplot(y_p, hist = False, label = 'y예측')
plot.show()
#seaborn으로 출력
#plot.scatter(x['kor'], y, marker = '+')
#plot.scatter(x['kor'], y_p, marker = 'o')
#plot.figure(figsize=(10,5))
#plot.show()
0.021 * 삼성 + 0.00055 * 현차 + 0.00052 * LG화학 + 673.75 = KOSPI
라는 식이 도출되었고
결정계수는 0.98862가 나왔다.
삼성전자 한 가지만 했을 때보다 3가지를 종합적으로 고려한 것이 결정계수가 조금 더 높긴 했다.
5. 삼성전자와 KOSPI 의 상관관계를 2차식으로 살펴보기!
degree를 2로 해서 삼성전자와 KOSPI의 상관관계를 2차식으로 만들어 살펴보았다.
import pandas as pd
import openpyxl
import matplotlib.pyplot as plot
import sklearn
plot.rcParams["font.family"] = 'Malgun gothic'
data = pd.read_excel("stock.xlsx", header=0)
newData = data[['SAMSUNG', 'HYUNDAI', 'LG', 'KOSPI']]
#속성(변수) 선택
x = newData[['SAMSUNG']]
y = newData[['KOSPI']]
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree = 2) #2차항 적용
x_poly = poly.fit_transform(x)
#단순 회귀 모델 생성
model = LinearRegression()
model.fit(x_poly, y)
#예측 모델 생성
y_p = model.predict(x_poly)
#가중치와 y절편 출력
print('가중치 a : ', model.coef_)
print('y절편 : ', model.intercept_)
#결정계수
relation_square = model.score(x_poly, y)
print('결정계수 : ', relation_square)
import seaborn as sns
ax1 = sns.distplot(y, hist = False, label = 'y실제')
ax2 = sns.distplot(y_p, hist = False, label = 'y예측')
plot.show()
#seaborn으로 출력
#plot.scatter(x['kor'], y, marker = '+')
#plot.scatter(x['kor'], y_p, marker = 'o')
#plot.figure(figsize=(10,5))
#plot.show()
7.52 * 삼성 * 삼성 -3.28 * 삼성 -936.497 = KOSPI
라는 식이 2차식이 도출되었으며
결정계수는 0.981059가 나왔다.
1차식이었을 때가
KOSPI = 0.03 * 삼성전자 + 529.83 으로 나왔고
결정계수는 0.971로 나왔는데 2차식이 결정계수가 더 높긴하다.
6. 삼성전자, 현대자동차와 KOSPI의 상관관계를 2차식으로 구해보기
결정계수는 0.986558로 높게 나왔다.
7. 삼성전자, 현대자동차, LG화학 3가지 속성과 KOSPI와의 상관관계를 2차식으로 나타내기
2차식으로 나타내니 결정계수가 0.9932를 찍었다. ㄷㄷ
예측 그래프도 실제 그래프와 거의 같다.
삼성전자, 현대자동차, LG화학의 주가를 살펴보면 KOSPI의 흐름을 거의 예측할 수 있다는 결론이 나온다.
'프로그래밍 > 머신러닝' 카테고리의 다른 글
서포트 백터 머신(from sklearn.svm import SVR)_파이썬으로 머신러닝 배우기 (1) | 2021.04.21 |
---|---|
집값과 경기종합지수의 상관관계_파이썬으로 머신러닝 배우기 (0) | 2021.04.19 |
다중 선형 회귀_파이썬으로 머신러닝 배우기 (0) | 2021.04.14 |
단순 선형 회귀 2차식, 3차식, n차식까지 만들기(PolynomialFeatures)_파이썬으로 머신러닝 배우기 (0) | 2021.04.12 |
단순 선형 회귀(LinearRegression)_파이썬으로 머신러닝 배우기 (1) | 2021.04.09 |