선형 회귀를 사용한 지진 매개 변수 예측

지진 규모 예측 모델

Unsplash에 Dan Gold의 사진

Python은 데이터 과학에 관심이있는 사람들 사이에서 가장 일반적인 언어 중 하나입니다. 라이브러리를 통해 원하는 모든 유형의 데이터를 수정하고 사용할 수 있습니다. Python 과 적절한 기계 학습 알고리즘 의 도움으로 예측 모델을 만들고 원하는대로 데이터를 그래프로 표시 할 수 있습니다.

우리가 취할 단계 :

  • 데이터 세트 준비
  • 선형 회귀를 사용하여 모델 구축
  • Matplotlib 및 Seaborn을 사용한 시각화

csv 파일 형식으로 데이터를 다운로드하고 Pandas 라이브러리로 데이터 검색 및 편집을 시작하겠습니다. 오픈 소스에서 쉽게 지진 데이터를 다운로드 할 수 있습니다. 이를 위해 AFAD 또는 kaggle 사이트의 데이터베이스를 사용할 수 있습니다. 1910 ~ 2017 년 터키 지진을 포함한 데이터가 있습니다. 확장자가있는 파일 pycsv확장자가 같은 파일 경로에 있기 때문에 데이터를 읽을 수 있으며 데이터를 쉼표로 구분하겠다고 썼습니다.

pandas로 csv 파일을 읽어 보겠습니다.

import pandas as pd
data=pd.read_csv("earthquake.csv",sep=",")
print(data)

      
Our data file is 2400x17 matrix

  • Id : 지진 주문 번호
  • 날짜 : 지진 발생 날짜
  • 시간 : 지진이 발생한 시간
  • 위도 : 지진 진원지의 위도
  • 경도 : 지진 진원지의 경도
  • 국가 : 지진 진원지 국가
  • 도시 : 지진이 발생한 지역
  • 면적 : 지진이 발생한 지역
  • 방향 : 지진 신호의 방향
  • Dist : 발생한 지진 지역
  • 깊이 : 발생한 지진의 깊이 (표면으로부터의 거리)
  • Xm : 주어진 크기 값 중 가장 큰 값
  • Md : 시간에 따른 크기
  • 리히터 : 리히터 크기 또는 로컬 크기 (ML)
  • Mw : 모멘트 크기
  • MS : 표면파 크기
  • Mb : 체파 크기

data=data.info()
print(data)

      
Datas may be float or string.

import pandas as pd
data=pd.read_csv("earthquake.csv",sep=",")
data=data[['id','lat','long','dist','depth','xm','md','richter', 'ms','mb']]
data=data.head(10)
print(data)

      
Data including only numerical values

에서 기계 학습 분석 경술는 X (입력)와 Y (출력)으로 분할된다. 내가 가지고있는 csv 파일에서 xm 매개 변수의 최대 크기 값을 추정하고 싶습니다. 먼저 numpy 라이브러리로 추측 할 대상 변수를 변환합니다. 입력 데이터 (X)를 생성합니다. drop메소드로 추측 할 대상 변수를 삭제해야합니다 . 열을 삭제할 것이므로 axis = 1을 작성하겠습니다.

import numpy as np
y=np.array(veri['xm'])
X=np.array(data.drop('xm',axis=1))

NaN (숫자가 아님) 데이터를 읽지 않고 오류를 발생시킵니다.

#read latitude, longitude, depth and magnitude.
data=data[['lat','long','depth','xm','md']]

data=linear.score(X_test,y_test)
print(data)
df=linear.score(X_train,y_train)
print(df)

      
Scores of taining and test values (very close)

#model weights
print(linear.coef_)
print(linear.intercept_)

      
Coefficients and prediction variable

ddf=np.array([[40.05, 35.80, 10.0, 3.2]])
ddf=linear.predict(ddf)
print(ddf)

예상 크기는 4.12입니다.

그게 무슨 뜻이야? 이것은 위도와 경도가 40.05–35.80 (Turkey-Kocaeli), 깊이 10km, 지속 강도 (md)가 3.2 인 지진의 최대 규모에 대한 답입니다. 4.12로 답변을 받았습니다. 모델이 이전에 삭제 한 최대 크기 (xm) 값을 추정했다면 어떻게됩니까? 먼저 데이터에서 선택하겠습니다.

import pandas as pd
data=pd.read_csv("earthquake.csv",sep=",")
data=data[['date','time','lat','long','depth','city','xm',]]
data=data.head(10)
print(data)

코자 엘리시에서 규모 4.0의 지진

이를 조사하기 위해 데이터를 살펴보면 2007 년 코자 엘리에서 발생한 지진의 규모 (지수 1)는 4.0으로 표시되며 위도 40.79, 경도 30.09, 깊이 5.2km, md = 3.8입니다. 이제 모델을 사용하여 예측할 수 있습니다. 이를 위해 실제 지진의 변수를 작성해야합니다.

data2=np.array([[40.79, 30.09, 5.2, 3.8]])
df=linear.predict(data2)
print(df

예상 규모

실제로 발생한 지진은 카탈로그에서 4.0이었고 우리의 추정치는 4.099로 하단에서 발견되었습니다.

Visualisation the Data

For this, we download the matplotlib and seaborn libraries.

import matplotlib.pyplot as plt 
import seaborn as sn
f,ax = plt.subplots(figsize=(10, 10)) 
sn.heatmap(veri.corr(), annot=True, linewidths=.9, fmt= '.2f',ax=ax) plt.show()
data.depth.plot(kind="line",grid=True,label="depth",linestyle=":",color="r")
data.lat.plot(kind="line",grid=True,label="richter",linestyle="-",color="g")
data.xm.plot(kind="line",grid=True,label="magnitude",linestyle="--",color="b")
plt.legend(loc="best")  
plt.title("depth-richter-magnitude")
plt.show()

      
Correlation of all the variables

Distribution of Depth-Richter-Magnitude (xm)

You may see the code script of this study here.

Machine Learning Prediction Series 1- House Price Prediction with Simple Linear Regression

Suggested posts

아마존 상품 리뷰의 감정 분석

아마존 상품 리뷰의 감정 분석

안녕하세요 여러분,이 기사에서는 Amazon Electronics 제품 리뷰에 대한 감정 분석을 안내합니다. 내용 : 감성 분석은 자연어 처리, 텍스트 분석, 통계를 이용하여 고객 감성을 분석하는 과정입니다.

🔥Keepsake🔥 — 머신 러닝을위한 버전 관리

🔥Keepsake🔥 — 머신 러닝을위한 버전 관리

머신 — 배포, 추적, 수리 및 반복이 블로그 게시물에서는 🔥 Keepsake 🔥에 대해 논의 할 것입니다. Keepsake는 머신 러닝 실험을위한 버전 관리 도구입니다.