FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
WeChatより転載。機械学習コミュニティ、著者の許可を得て掲載
時系列解析はデータサイエンスにおいて非常に重要な分野であり、主に統計解析、変化点の検出、異常の検出、将来のトレンドの予測から構成されています。しかし、これらの時系列手法は、通常、異なるライブラリによって実装されています。これらの技術を1つのライブラリで実現する方法はないでしょうか?
答えはイエスです。この記事では、上記の問題を完璧に解決してくれる素晴らしいツールキット、Katsを紹介します。
画像
Katsとは?
時系列解析やモデリング技術は世の中にたくさんありますが、比較的散在しています。今回FaceBookがオープンソース化したKatsは、予測、異常検知、多変量解析、特徴抽出埋め込みなど、軽量で使いやすい汎用的な時系列解析フレームワークです。Katsは、Pythonで時系列解析を行うためのワンストップツールキットと考えることができます。
Katsのインストール
pip install --upgrade pip
pip install kats
Katsの機能を理解するために、このフレームワークを使って、KaggleでStackOverflowの質問カウント問題を解析してみます。データリンクは https://www.kaggle.com/aishu200023
まず、データを読み込むことから始めます。
import pandas as pd
df = pd.read_csv("MLTollsStackOverflow.csv")
# Turn the month column into datetime
df["month"] = pd.to_datetime(df["month"], format="%y-%b")
df = df.set_index("month")
画像
では、Pythonに関連するStackOverflowの問題数を解析してみましょう。データをカラムセットとテストセットに分割し、予測値を評価します。
{{コード
データを時系列に変換する
まず、時系列オブジェクトを構築します。使用するのは
python = df["python"].to_frame()
# Split data into train and test set
train_len = 102
train = python.iloc[:train_len]
test = python.iloc[train_len:]
で時間列を指定します。
time_col_name='month'
データをプロットするには、plotメソッドを呼び出します。
from kats.consts import TimeSeriesData
# Construct TimeSeriesData object
ts = TimeSeriesData(train.reset_index(), time_col_name="month")
画像
かっこいい!Pythonに関する質問が時間と共に増えているようです。今後30日間の傾向を予測することは可能でしょうか?はい、Katsでできます。
予測する
Katsは現在、以下の10種類の予測モデルをサポートしています。
リニア
二次関数
ARIMA
SARIMA
ホルト・ウィンタース
プロフェット
AR-Net(アールネット
LSTM
シータ
ヴァー
上記のモデル以外にもあるので、2つほど試してみましょう
Prophetを使った予測からスタート。
ts.plot(cols=["python"])
画像
ビジュアライゼーション
from kats.models.prophet import ProphetModel, ProphetParams
# Specify parameters
params = ProphetParams(seasonality_mode="multiplicative")
# Create a model instance
m = ProphetModel(ts, params)
# Fit mode
m.fit()
# Forecast
fcst = m.predict(steps=30, freq="MS")
fcst
画像
カッコイイ! テストデータと比較して、予測結果を評価してみましょう。
{{コード {コード
画像
この予測は、観測とよく合っているようです
ホルト・ウィンタース
次に試すのは、季節感を捉えるためのパターンであるHolt-Wintersです。KatsのHolt-Wintersメソッドの使い方を説明します。
{{コード
画像
変化点を検出する
時系列で統計的に有意な平均値の変化が起こるタイミングについて考えたことがありますか?
画像
Katsでは、時系列の平均値の上下の移動を検出する手法であるCUSUMアルゴリズムを用いて、変化点を検出することができます。
Katsで変化点を検出する方法を見てみましょう。
{{コード
画像
カッコイイ! StackOverflowの課題カウントの他のカテゴリで変化点を検出してみましょう。
まず、トピックから提供される変化点を検出する関数を作成します。
m.plot()
機械学習
{{コード
画像
ディープラーニング
{{コード
画像
孤立点検出
NLPの時系列を見ると、何が見えるか?
{{コード
画像
2018年から2019年にかけて、NLPの出題数は減少しました。
課題数の減少が異常値である。異常値は下流処理で問題を起こす可能性があるため、異常値を検出することが重要です。
しかし、データを見て異常値を見つけるのは、必ずしも効率的ではなく、簡単ではありません。幸い、Katsでは時系列の異常値を検出することも可能です
katによる外れ値の検出は、わずか数行のコードで可能です。
{{コード
外れ値は2018-01-01 00:00:00から2019-03-01 00:00:00までです。
カッコイイ! 上のグラフから見えることを確認する結果となりました。
時系列機能
統計以外にも、線形性、トレンドの強さ、季節の強さ、季節パラメータなど、気になる時系列での特徴があります。
Katsでは、TsFeaturesを通して、時系列の特性に関する重要な情報を見つけることができます。
画像
概要
Katsを使って、予測、変化点の検出、外れ値の検出、時系列の特徴の抽出を行う方法を学んだところです。この記事が、皆さんが仕事で時系列の問題を解決し、データから価値ある情報を抽出するために役立つことを願っています。
上記はFacebookオープンソースワンストップサービスpython時系列シャープナーKatsの詳細です、Facebookオープンソース時系列シャープナーKatsについての詳細は、BinaryDevelopの他の関連記事に注意を払うしてください
関連
-
[解決済み】MIPSでmod演算子を正しく使うには?
-
[解決済み] Pythonです。AttributeError: '_io.TextIOWrapper' オブジェクトには 'split' という属性がありません。
-
[解決済み] Spyderが起動しない
-
[解決済み] ファイルにログを記録し、標準出力に印刷するためのロガー設定
-
[解決済み] Python 3 の処理エラー TypeError: BaseException を継承しないクラスのキャッチは許可されていません。
-
[解決済み] PythonのPandasエラー:カラムはキーと同じ長さでなければならない
-
[解決済み] Python ショッピングカート カートに入れる, 合計を取得する, アイテム数を取得する
-
[解決済み] ブラウザでJupyter/ipythonノートブックのセル幅を広げるにはどうすればよいですか?
-
PythonのインストールでNo matching distribution found for tensorflowの問題に対する解決策
-
AttributeError: モジュール 'wordcloud' には属性 'WordCloud' がありません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】pkg_resources という名前のモジュールがありません。
-
[解決済み】heroku: このアプリのデフォルト言語が検出されない
-
[解決済み] NumpyでReLU関数を実装する方法
-
[解決済み] pythonw.exe has stopped working "というランダムなクラッシュが発生する。
-
[解決済み] ビューティフルスープ分解()
-
[解決済み] Pythonで予期しないトークン`;'付近で構文エラーが発生する
-
[解決済み] TensorFlowチュートリアルのbatch_xs, batch_ys = mnist.train.next_batch(100) のnext_batchはどこから来ているのでしょうか?
-
[解決済み] standard_init_linux.go:211: exec ユーザープロセスが "exec format error" を引き起こしました。
-
urlで最大再試行回数を超えてしまう問題を解決しました