LoginSignup
0
2

More than 5 years have passed since last update.

Rubyを使ってWeather Undergroundから10日間の時別気温予報データを取得する

Last updated at Posted at 2017-04-17

はじめに

機械学習を使って電力需要予測をするという記事を公開しているのですが、予測に気温のデータが必要であることから、どうしても使い勝手が悪い。

機械学習で電力需要を予測してみる パート2

ということで、未来の気温データを取得する方法を探していたらWeahter UndergroundというサイトのAPIで10日間分の時別の気温予報データが取得できることがわかったので、そのやり方をまとめます。

Weather Underground

ちなみに、以下のサイトを参考にさせて頂きました。

Google Weather APIがサービス終了して天気予報難民に -> 帰ってきたうみったー

データを取得してCSV形式で保存

東京都のデータを取得する例を以下に示します。

wu.rb
require 'open-uri'
require 'json'
require 'date'

uri = URI.parse('http://api.wunderground.com/api/[your API key]/hourly10day/lang:JP/q/Japan/Tokyo.json')

json_string = uri.read('r:binary').encode("UTF-8", invalid: :replace, undef: :replace)
parsed_json = JSON.parse(json_string)

temps = "MONTH,WEEK,HOUR,TEMP\n"

parsed_json["hourly_forecast"].each do |val|

  y = val["FCTTIME"]["year"].to_i
  m = val["FCTTIME"]["mon"].to_i
  d = val["FCTTIME"]["mday"].to_i
  h = val["FCTTIME"]["hour"].to_i

  t = DateTime.new(y,m,d,h,0)

  w = t.wday
  temp = val["temp"]["metric"]

  temps += "#{m},#{w},#{h},#{temp}\n"

end

File.open("tokyo.csv", "w") do |f| 
  f.puts(temps)
end

tokyo.csvの中身は以下のようになっています。

MONTH,WEEK,HOUR,TEMP
4,2,6,19
4,2,7,21
4,2,8,21
4,2,9,22
4,2,10,23
4,2,11,23
4,2,12,23
4,2,13,24
...

取得したデータで電力需要を予測

上述した電力需要予測の記事で示しているコードに以下を追記します。

# データ読込
filename = "tokyo.csv"
df = pd.read_csv(filename)

# 入力データの取得
X = df.as_matrix().astype('float')

# 正規化
X_pred = scaler.transform(X)

# 予測
result = model.predict(X_pred)

# データフレームに追加
df["KW"] = result

# グラフ描画
df.KW.plot(figsize=(15, 3))

Unknown.png

...この予測結果が正解か否かは、これから電力会社さんが公開して下さる電力使用実績データと比較しないとわからないですけどね(^_^;)

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2