세계 인구 예측
개시하다
이번에는 SVM을 이용해 세계 인구를 예측하려고 한다.
앞서 나는 한 편의 문장세계 경제를 예측하다을 썼는데 이것은 한 번의 함수가 SVM에 적용되는 것이 의미가 없다고 생각하기 때문에 좋은 제재를 찾았다.
세계 인구가 최근 몇 년 동안 급격히 증가하여 일반적으로 한 번의 함수는 적용되지 않는다고 여긴다.
데이터를 얻다
데이터
이쪽 pdf에 세계 인구의 추이가 기록되어 있기 때문에 이걸 사용합니다.
이번에 낡은 데이터를 포함하면 공부가 잘 안 돼요. 1850년.
이전 데이터는 포함되지 않습니다.
가공
학습 파일의 형식은年度,人口
年度,人口
...
누르십시오.
주의
한 번 보면 이 문서의 인구 단위는 10억 명이라는 것을 알 수 있다.
실행
소스 코드.
세계 경제를 예측하다를 바탕으로 제작되었습니다.import sys
from sklearn.svm import SVC
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(-6, 6)], 'C': [3]}#,
# {'kernel': ['linear'], 'C': [1, 10, 100, 1000]}
]
# model = GridSearchCV(svm.SVR(), tuned_parameters, verbose=1,cv=5, scoring="mean_squared_error")
model =svm.SVR(kernel='rbf',gamma=0.00001,C=1e3)
model.fit(in_data,label_data)
plt.scatter([e[0] for e in in_data], [e for e in label_data])
test_in_data=[[e] for e in range(int(min([e[0] for e in in_data])),int(max([e[0] for e in in_data])),1)]
# test_in_data=[[e] for e in range(2100)]
plt.plot([e[0] for e in test_in_data], model.predict(test_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()
위 작업을 수행한 후
이렇게 됐어.
일차 함수는 적용되지 않습니다.
예상하다
2050을 입력해 보세요.
결과는 10.8245358213이었다.(단위: 10억명, 즉 108억2천453만5천821명)
유엔의 전망에 따르면 98억 명으로 오차가 있지만 예상할 수 있다.
총결산
이번에는 SVM을 사용하라는 의미가 있습니다.
하지만 이 모델은 2100년을 제대로 예상하지 못했다.
Reference
이 문제에 관하여(세계 인구 예측), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/PenguinCabinet/items/3f861036a13e95e6f82c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
데이터
이쪽 pdf에 세계 인구의 추이가 기록되어 있기 때문에 이걸 사용합니다.
이번에 낡은 데이터를 포함하면 공부가 잘 안 돼요. 1850년.
이전 데이터는 포함되지 않습니다.
가공
학습 파일의 형식은
年度,人口
年度,人口
...
누르십시오.주의
한 번 보면 이 문서의 인구 단위는 10억 명이라는 것을 알 수 있다.
실행
소스 코드.
세계 경제를 예측하다를 바탕으로 제작되었습니다.import sys
from sklearn.svm import SVC
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(-6, 6)], 'C': [3]}#,
# {'kernel': ['linear'], 'C': [1, 10, 100, 1000]}
]
# model = GridSearchCV(svm.SVR(), tuned_parameters, verbose=1,cv=5, scoring="mean_squared_error")
model =svm.SVR(kernel='rbf',gamma=0.00001,C=1e3)
model.fit(in_data,label_data)
plt.scatter([e[0] for e in in_data], [e for e in label_data])
test_in_data=[[e] for e in range(int(min([e[0] for e in in_data])),int(max([e[0] for e in in_data])),1)]
# test_in_data=[[e] for e in range(2100)]
plt.plot([e[0] for e in test_in_data], model.predict(test_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()
위 작업을 수행한 후
이렇게 됐어.
일차 함수는 적용되지 않습니다.
예상하다
2050을 입력해 보세요.
결과는 10.8245358213이었다.(단위: 10억명, 즉 108억2천453만5천821명)
유엔의 전망에 따르면 98억 명으로 오차가 있지만 예상할 수 있다.
총결산
이번에는 SVM을 사용하라는 의미가 있습니다.
하지만 이 모델은 2100년을 제대로 예상하지 못했다.
Reference
이 문제에 관하여(세계 인구 예측), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/PenguinCabinet/items/3f861036a13e95e6f82c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import sys
from sklearn.svm import SVC
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(-6, 6)], 'C': [3]}#,
# {'kernel': ['linear'], 'C': [1, 10, 100, 1000]}
]
# model = GridSearchCV(svm.SVR(), tuned_parameters, verbose=1,cv=5, scoring="mean_squared_error")
model =svm.SVR(kernel='rbf',gamma=0.00001,C=1e3)
model.fit(in_data,label_data)
plt.scatter([e[0] for e in in_data], [e for e in label_data])
test_in_data=[[e] for e in range(int(min([e[0] for e in in_data])),int(max([e[0] for e in in_data])),1)]
# test_in_data=[[e] for e in range(2100)]
plt.plot([e[0] for e in test_in_data], model.predict(test_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()
2050을 입력해 보세요.
결과는 10.8245358213이었다.(단위: 10억명, 즉 108억2천453만5천821명)
유엔의 전망에 따르면 98억 명으로 오차가 있지만 예상할 수 있다.
총결산
이번에는 SVM을 사용하라는 의미가 있습니다.
하지만 이 모델은 2100년을 제대로 예상하지 못했다.
Reference
이 문제에 관하여(세계 인구 예측), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/PenguinCabinet/items/3f861036a13e95e6f82c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(세계 인구 예측), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/PenguinCabinet/items/3f861036a13e95e6f82c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)