2018-01-24

如何在 Windows 10 的 Anaconda 3 安裝 PyTorch

如何在 Windows 10 的Anaconda 3 安裝 PyTorch

如何在 Windows 10 的 Anaconda 3 安裝 PyTorch:

# for CPU only packages
conda install -c peterjc123 pytorch

(詳情請參考:PyTorch在64位Windows下的Conda包)

台灣地震預測研究所 所長
林湧森
2018-01-24 19:01 UTC+8

2017-02-22

quake_forecast.py:同時預測時間、地點、規模

2017-02-22 南非德本站 Durban, South Africa Station 空氣2號 Air 2 (Arduino Uno + LF298N) - Analysis

2017-02-22 南非德本站 Durban, South Africa Station 空氣2號 Air 2 (Arduino Uno + LF298N)

我把之前寫的3個程式整合成1個:quake_forecast.py,以同時預測時間、地點、規模。

# coding: utf-8
# Quake Forecast: Predict Time, Location and Magnitude of a Quake
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestClassifier

left_half_duration = 3
right_half_duration = 1
right_half_estimate = 2
predict_duration = left_half_duration + right_half_duration + right_half_estimate
predict_height = 8

train = pd.read_csv('quake_signals.csv')
print(train)
features = ['Duration', 'Height']
data = train[features]
print(data)

# Predict Time
target = train['Time']
print(target)
model = LinearRegression()
model.fit(data, target)

quake_time = model.predict([[predict_duration, predict_height]])
print(quake_time)
print('Time: ' , round(right_half_estimate + quake_time[0]), ' days')

# Predict Location
target = train['Location']
print(target)
model = RandomForestClassifier()
model.fit(data, target)

quake_location = model.predict([[predict_duration, predict_height]])
print(quake_location)

# Predict Magnitude
target = train['Magnitude']
print(target)
model = LinearRegression()
model.fit(data, target)

quake_magnitude = model.predict([[predict_duration, predict_height]])
print(quake_magnitude)

程式碼放在:https://github.com/dysonlin1/Quake-Forecast

這次的預測,發布為:(AI預測菲律賓;我預測日本) 南非德本站修正地震預報:橙:5日以內,菲律賓或日本,M7.3 南アフリカ ダーバン局補正地震予報:オレンジ:5日以内に、フィリピンまたは日本、M7.3 Durban, South Africa Station Revised Quake Forecast: Orange: within 5 days, Philippines or Japan, M7.3

台灣地震預測研究所 所長
林湧森
2017-02-22 17:01 UTC+8

2017-02-20

改成用Linear Regression預測地震發生時間

2017-02-18 南非德本站 Durban, South Africa Station 空氣2號 Air 2 (Arduino Uno + LF298N) - Analysis

我改成用Linear Regression預測地震發生時間。
程式碼如下(相關程式碼和數據集,都放在https://github.com/dysonlin1/Quake-Forecast):

# coding: utf-8
# Machine Learning: Quake Forecast
import pandas as pd
from sklearn.linear_model import LinearRegression

train = pd.read_csv('quake_signals.csv')
print(train)

features = ['Duration', 'Height']
data = train[features]
print(data)

target = train['Time']
print(target)

model = LinearRegression()
model.fit(data, target)
quake_time = model.predict([[2, 4]])
print(quake_time)

台灣地震預測研究所 所長
林湧森
2017-02-20 18:08 UTC+8

2017-02-17

開始以機器學習預測地震(5):GitHub

2017-02-15 南非德本站 Durban, South Africa Station 空氣2號 Air 2 (Arduino Uno + LF298N) - Analysis

我的開始以機器學習預測地震系列文章,已經順利完成。
在此做個總結。

在這一系列文章中,我建立了以機器學習預測地震的完整程式架構:
開始以機器學習預測地震(1):預處理(Preprocess)數據
開始以機器學習預測地震(2):以Random Forest預測地震發生時間
開始以機器學習預測地震(3):以Random Forest預測地震發生地點
開始以機器學習預測地震(4):以Linear Regression預測地震發生規模

未來將會以此為基礎,繼續發展。

為了方便大家研究,特地將文章中所有的Python程式碼、輸入數據和訊號圖,放在GitHub:
https://github.com/dysonlin1/Quake-Forecast

歡迎大家一起來預測地震!
謝謝!

台灣地震預測研究所 所長
林湧森
2017-02-17 14:17 UTC+8

開始以機器學習預測地震(4):以Linear Regression預測地震發生規模

2017-02-15 南非德本站 Durban, South Africa Station 空氣2號 Air 2 (Arduino Uno + LF298N) - Analysis

預測地震(Earthquake Prediction, Quake Forecast)包含3個部分:時間(Time)、地點(Location)、規模(Magnitude)。

上上篇以Random Forest預測地震發生時間。
上一篇以Random Forest預測地震發生地點。
這篇將以Linear Regression預測地震發生規模。

程式碼如下:

# Machine Learning: Quake Forecast Magnitude
import pandas as pd
from sklearn.linear_model import LinearRegression

train = pd.read_csv('quake_signals.csv')
print(train)

features = ['Duration', 'Height']
data = train[features]
print(data)

target = train['Magnitude']
print(target)

model = LinearRegression()
model.fit(data, target)
quake_magnitude = model.predict([[2, 2.3]])
print(quake_magnitude)

程式執行結果如下:

以Linear Regression預測地震發生規模


所以,Linear Regression預測地震發生規模為:M5.4(以5.3904918四捨五入到小數點後第1位)。

台灣地震預測研究所 所長
林湧森
2017-02-17 08:44 UTC+8

開始以機器學習預測地震(3):以Random Forest預測地震發生地點

2017-02-15 南非德本站 Durban, South Africa Station 空氣2號 Air 2 (Arduino Uno + LF298N) - Analysis

預測地震(Earthquake Prediction, Quake Forecast)包含3個部分:時間(Time)、地點(Location)、規模(Magnitude)。

上一篇以Random Forest預測地震發生時間。
這篇將以Random Forest預測地震發生地點。

程式碼如下:

# Machine Learning: Quake Forecast Location
import pandas as pd
from sklearn.ensemble import RandomForestClassifier

train = pd.read_csv('quake_signals.csv')
print(train)

features = ['Duration', 'Height']
data = train[features]
print(data)

target = train['Location']
print(target)

model = RandomForestClassifier()
model.fit(data, target)
quake_location = model.predict([[2, 2.3]])
print(quake_location )

程式執行結果如下:

以Random Forest預測地震發生地點


所以,Random Forest預測地震發生地點為:印尼(Indonesia)。

台灣地震預測研究所 所長
林湧森
2017-02-17 08:09 UTC+8

開始以機器學習預測地震(2):以Random Forest預測地震發生時間

2017-02-15 南非德本站 Durban, South Africa Station 空氣2號 Air 2 (Arduino Uno + LF298N) - Analysis

預測地震(Earthquake Prediction, Quake Forecast)包含3個部分:時間(Time)、地點(Location)、規模(Magnitude)。

這篇將以Random Forest預測地震發生時間。
也就是說:預測山丘形訊號結束之後的第幾天將發生地震。

上一篇得到的數據為:
ID Duration Height  Time    Location     Magnitude
 2       4         6          2     Philippines       6.5
 3       1         3.5       1        Malawi          5.2
 4       2         3          2      Indonesia        5.2
 5       1         2          1        Alaska           5.3
 6       1         3          1         Japan           5.0

首先,將這些數據儲存成quake_signals.csv檔案,以方便後續的訓練:

將數據儲存成quake_signals.csv檔案


接下來,訓練Random Forest模形。
程式碼如下:

# Machine Learning: Quake Forecast Time
import pandas as pd
from sklearn.ensemble import RandomForestClassifier

train = pd.read_csv('quake_signals.csv')
print(train)

features = ['Duration', 'Height']
data = train[features]
print(data)

target = train['Time']
print(target)

model = RandomForestClassifier()
model.fit(data, target)
quake_time = model.predict([[2, 2.3]])
print(quake_time)

程式執行結果如下:

以Random Forest預測地震發生時間


所以,Random Forest預測地震發生時間為:山丘形訊號結束後1日以內。

台灣地震預測研究所 所長
林湧森
2017-02-17 06:53 UTC+8