본문 바로가기
프로그래밍/머신러닝

삼성전자, 현대자동차, LG화학 주가와 KOSPI 주가의 상관 관계 분석_파이썬으로 머신러닝 배우기

by 조크리 2021. 4. 16.
반응형

파이썬으로 머신러닝 배우기!

 

이번에는 삼성전자 주가, 현대 자동차 주가, LG화학 주가와 KOSPI 주가의 상관관계를 분석해보려한다. 

 

우선 데이터는 yahoo finance에서 1년치 데이터를 각각 다운받았고 장 마감 금액만으로 분석을 진행하였다. 

 

finance.yahoo.com/quote/%5EKS11?p=%5EKS11

 

KOSPI Composite Index (^KS11) Charts, Data & News - Yahoo Finance

Find the latest information on KOSPI Composite Index (^KS11) including data, charts, related news and more from Yahoo Finance

finance.yahoo.com

 

 

정리한 엑셀파일도 올려본다. 

stock.xlsx
0.02MB

 

 

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의 흐름을 거의 예측할 수 있다는 결론이 나온다. 

반응형