파이썬으로 세계 경제를 예상
11681 단어 파이썬Python3scikit-learn경제
소개
먼저 말씀드리면, 대단한 타이틀입니다만 큰 일은 하고 있지 않습니다.
SVM을 사용하여 세계 총 GDP를 연도부터 예상합니다.
이번 예상은 두 가지를 가정하고 있습니다.
・세계 경제는 계속 성장하는 것으로 한다.
・향후 예상할 수 없는 급격한 경제성장은 생각하지 않는다.
초보자이므로 조언과 실수를 지적해 주시면 도움이됩니다.
데이터 얻기
IMF가 세계 경제의 변화를 CSV로 배포하고 있으므로 다운로드합니다.
데이터
①최신년도를 선택하고 By Country Groups (aggregated data) and commodity prices를 클릭.
②world만 체크를 넣는다
③Gross domestic product, current prices U.S. dollars에 체크를 넣는다
④ 아래쪽에서 Excel 파일을 다운로드.
⑤ 데이터를 가공한다. (저기, 힘들었습니다)
가능하면 가공 후를 올리고 싶습니다만, 재배포해도 좋은지 조금 미묘하기 때문에 IMF의 사이트로부터 다운로드해 주세요.
주의
위 파일의 GDP 단위는 10억 달러입니다.
따라서 위의 파일을 그대로 사용하면 GDP 단위가 10억 달러가 됩니다.
소스 코드 작성
자, 파이썬과 scikit-learn으로 소스 코드를 작성하고 싶습니다.
main.pyimport sys
from sklearn.svm import LinearSVC
from sklearn import svm
import numpy as np
import copy
import matplotlib.pyplot as plt
from sklearn.model_selection import GridSearchCV
from sklearn.kernel_ridge import KernelRidge
from sklearn.metrics.pairwise import rbf_kernel
from sklearn.linear_model import Ridge
args = sys.argv
def regression_main():
# model = svm.SVR(kernel='rbf', C=1e3, gamma=0.1)
data=[]
with open(args[1],"r",encoding="utf-8") as f:
data=[e.replace("\n", "") for e in f.readlines()]
data=[[float(e) for e in e.split(",")] for e in copy.deepcopy(data) ]
in_data=[e[:-1] for e in data]
label_data=[e[-1] for e in data]
print(in_data,label_data)
tuned_parameters = [
{'kernel': ['rbf'], 'gamma': [10**i for i in range(-4,5)], 'C': [10**i for i in range(-3, 8)]}#,
# {'kernel': ['linear'], 'C': [1, 10, 100, 1000]}
]
model = GridSearchCV(svm.SVR(), tuned_parameters, cv=5, scoring="mean_squared_error")
model.fit(in_data,label_data)
plt.scatter([e[0] for e in in_data], [e for e in label_data])
plt.plot([e[0] for e in in_data], model.predict(in_data))
plt.show()
while True:
user_input=input("end?>")
if user_input=="end":break
user_in_data=[]
for i in range(len(in_data[0])):
t=float(input(">"))
user_in_data.append(t)
print(model.predict([user_in_data])[0])
def main():
print("1:label\n2:回帰")
n=int(input(">"))
if n==1:
#label_main()
if n==2:
regression_main()
main()
씨도 장치도없는 일반 소스 코드입니다.
다만, 파라미터를 여러가지 미세 조정하는 것이 귀찮기 때문에 GridSearchCV로 자동적으로 최적화하고 있습니다.
실행할 때는
python main.py 学習ファイル
입니다
학습 데이터 형식
데이터의 가공을 실시하는 방법을 싣지 않기 때문에 대신에 학습 데이터의 포맷을 올려 둡니다.
引数1,引数2,引数3...,出力
引数1,引数2,引数3...,出力
...
이런 느낌이므로 이번 경우에는
年度,世界合計GDP
年度,世界合計GDP
...
입니다.
실행하다
실행하고 싶습니다.
파란색 원이 실제 세계의 GDP이고 파란색 선이 SVM의 예상치입니다.
거의 1 차 함수입니다 ...
일부러, SVM을 사용한 의미가 없는 생각도 합니다.
어쨌든,이 모델을 사용하여 예상하고 싶습니다.
예상해 본다.
그럼 조속히, 2022라고 입력해 2022년을 예상해 보고 싶습니다.
출력은 929482.95366억 미국 달러였다.
IMF의 예상은 1032009.94억 달러였기 때문에
일단 예상을 할 수 있었습니다.
요약
이번 데이터는 1차 함수가 적용되었기 때문에 너무 SVM의 혜택을 얻을 수 없었습니다.
Reference
이 문제에 관하여(파이썬으로 세계 경제를 예상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/PenguinCabinet/items/7b9e841634ad7ce9c0f6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
IMF가 세계 경제의 변화를 CSV로 배포하고 있으므로 다운로드합니다.
데이터
①최신년도를 선택하고 By Country Groups (aggregated data) and commodity prices를 클릭.
②world만 체크를 넣는다
③Gross domestic product, current prices U.S. dollars에 체크를 넣는다
④ 아래쪽에서 Excel 파일을 다운로드.
⑤ 데이터를 가공한다. (저기, 힘들었습니다)
가능하면 가공 후를 올리고 싶습니다만, 재배포해도 좋은지 조금 미묘하기 때문에 IMF의 사이트로부터 다운로드해 주세요.
주의
위 파일의 GDP 단위는 10억 달러입니다.
따라서 위의 파일을 그대로 사용하면 GDP 단위가 10억 달러가 됩니다.
소스 코드 작성
자, 파이썬과 scikit-learn으로 소스 코드를 작성하고 싶습니다.
main.pyimport sys
from sklearn.svm import LinearSVC
from sklearn import svm
import numpy as np
import copy
import matplotlib.pyplot as plt
from sklearn.model_selection import GridSearchCV
from sklearn.kernel_ridge import KernelRidge
from sklearn.metrics.pairwise import rbf_kernel
from sklearn.linear_model import Ridge
args = sys.argv
def regression_main():
# model = svm.SVR(kernel='rbf', C=1e3, gamma=0.1)
data=[]
with open(args[1],"r",encoding="utf-8") as f:
data=[e.replace("\n", "") for e in f.readlines()]
data=[[float(e) for e in e.split(",")] for e in copy.deepcopy(data) ]
in_data=[e[:-1] for e in data]
label_data=[e[-1] for e in data]
print(in_data,label_data)
tuned_parameters = [
{'kernel': ['rbf'], 'gamma': [10**i for i in range(-4,5)], 'C': [10**i for i in range(-3, 8)]}#,
# {'kernel': ['linear'], 'C': [1, 10, 100, 1000]}
]
model = GridSearchCV(svm.SVR(), tuned_parameters, cv=5, scoring="mean_squared_error")
model.fit(in_data,label_data)
plt.scatter([e[0] for e in in_data], [e for e in label_data])
plt.plot([e[0] for e in in_data], model.predict(in_data))
plt.show()
while True:
user_input=input("end?>")
if user_input=="end":break
user_in_data=[]
for i in range(len(in_data[0])):
t=float(input(">"))
user_in_data.append(t)
print(model.predict([user_in_data])[0])
def main():
print("1:label\n2:回帰")
n=int(input(">"))
if n==1:
#label_main()
if n==2:
regression_main()
main()
씨도 장치도없는 일반 소스 코드입니다.
다만, 파라미터를 여러가지 미세 조정하는 것이 귀찮기 때문에 GridSearchCV로 자동적으로 최적화하고 있습니다.
실행할 때는
python main.py 学習ファイル
입니다
학습 데이터 형식
데이터의 가공을 실시하는 방법을 싣지 않기 때문에 대신에 학습 데이터의 포맷을 올려 둡니다.
引数1,引数2,引数3...,出力
引数1,引数2,引数3...,出力
...
이런 느낌이므로 이번 경우에는
年度,世界合計GDP
年度,世界合計GDP
...
입니다.
실행하다
실행하고 싶습니다.
파란색 원이 실제 세계의 GDP이고 파란색 선이 SVM의 예상치입니다.
거의 1 차 함수입니다 ...
일부러, SVM을 사용한 의미가 없는 생각도 합니다.
어쨌든,이 모델을 사용하여 예상하고 싶습니다.
예상해 본다.
그럼 조속히, 2022라고 입력해 2022년을 예상해 보고 싶습니다.
출력은 929482.95366억 미국 달러였다.
IMF의 예상은 1032009.94억 달러였기 때문에
일단 예상을 할 수 있었습니다.
요약
이번 데이터는 1차 함수가 적용되었기 때문에 너무 SVM의 혜택을 얻을 수 없었습니다.
Reference
이 문제에 관하여(파이썬으로 세계 경제를 예상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/PenguinCabinet/items/7b9e841634ad7ce9c0f6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import sys
from sklearn.svm import LinearSVC
from sklearn import svm
import numpy as np
import copy
import matplotlib.pyplot as plt
from sklearn.model_selection import GridSearchCV
from sklearn.kernel_ridge import KernelRidge
from sklearn.metrics.pairwise import rbf_kernel
from sklearn.linear_model import Ridge
args = sys.argv
def regression_main():
# model = svm.SVR(kernel='rbf', C=1e3, gamma=0.1)
data=[]
with open(args[1],"r",encoding="utf-8") as f:
data=[e.replace("\n", "") for e in f.readlines()]
data=[[float(e) for e in e.split(",")] for e in copy.deepcopy(data) ]
in_data=[e[:-1] for e in data]
label_data=[e[-1] for e in data]
print(in_data,label_data)
tuned_parameters = [
{'kernel': ['rbf'], 'gamma': [10**i for i in range(-4,5)], 'C': [10**i for i in range(-3, 8)]}#,
# {'kernel': ['linear'], 'C': [1, 10, 100, 1000]}
]
model = GridSearchCV(svm.SVR(), tuned_parameters, cv=5, scoring="mean_squared_error")
model.fit(in_data,label_data)
plt.scatter([e[0] for e in in_data], [e for e in label_data])
plt.plot([e[0] for e in in_data], model.predict(in_data))
plt.show()
while True:
user_input=input("end?>")
if user_input=="end":break
user_in_data=[]
for i in range(len(in_data[0])):
t=float(input(">"))
user_in_data.append(t)
print(model.predict([user_in_data])[0])
def main():
print("1:label\n2:回帰")
n=int(input(">"))
if n==1:
#label_main()
if n==2:
regression_main()
main()
python main.py 学習ファイル
引数1,引数2,引数3...,出力
引数1,引数2,引数3...,出力
...
年度,世界合計GDP
年度,世界合計GDP
...
실행하고 싶습니다.
파란색 원이 실제 세계의 GDP이고 파란색 선이 SVM의 예상치입니다.
거의 1 차 함수입니다 ...
일부러, SVM을 사용한 의미가 없는 생각도 합니다.
어쨌든,이 모델을 사용하여 예상하고 싶습니다.
예상해 본다.
그럼 조속히, 2022라고 입력해 2022년을 예상해 보고 싶습니다.
출력은 929482.95366억 미국 달러였다.
IMF의 예상은 1032009.94억 달러였기 때문에
일단 예상을 할 수 있었습니다.
요약
이번 데이터는 1차 함수가 적용되었기 때문에 너무 SVM의 혜택을 얻을 수 없었습니다.
Reference
이 문제에 관하여(파이썬으로 세계 경제를 예상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/PenguinCabinet/items/7b9e841634ad7ce9c0f6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번 데이터는 1차 함수가 적용되었기 때문에 너무 SVM의 혜택을 얻을 수 없었습니다.
Reference
이 문제에 관하여(파이썬으로 세계 경제를 예상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/PenguinCabinet/items/7b9e841634ad7ce9c0f6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)