7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

深層学習以外の機械学習と応用技術 by QuantumCoreAdvent Calendar 2019

Day 6

時系列データ解析エンジンのQoreSDK使おうとして挫折中の話

Last updated at Posted at 2019-12-05

きっかけ

Qiitaのアドベントカレンダーで、スポンサーってなんだろう?とちょっと覗いてみたら、
「REST API」で「時系列データ解析エンジン」っていうキーワードに惹かれてQoreを使ってみました。

気になった背景

IoTをメインでやってる身として、時系列データは普段からたくさん取得しているので、それの解析にはもともと興味がありました。

なお、機械学習系は素人です。普段はJavaScript(node.js)使いなので、pythonもほとんど知りません。でも**APIになってるならきっと使える!**とおもってチャレンジします。

始める流れ

  1. APIの利用がQiita書くなら2ヶ月無料とのことで、利用申込みをします。

  2. そこからメールのやり取りをして、利用規約とかに同意するとAPIキーが発行されます(この手順はそのうちメールからwebに変わるらしい)

  3. APIキーと一緒にwhlファイルがつまったgoogle driveのURLがもらえます。

  4. それらとgithubリポジトリをみてさぁ始めよう!

・・・・・さぁ始めよう???

ここからが挫折の連続でした・・・・

AIバリバリ触ってるぜ!の猛者が使うことの想定なのか、最初はREADMEすら書いてある内容がわからず。。。。

せっかくなので、自分のつまづきポイントを紹介したいとおもいます

つまずいたポイント1:機械学習知識

APIキーを貰ったときに、注意としてこう言われました。

一度にAPIに投げられるデータサイズに制限がありまして、NTV < 150,000 && N*T < 10,000の大きさまでのデータとして頂きますようお願いいたします

Nってなに?T?V? って状態でした。
APIなら簡単に使えるだろうって軽い目論見で申し込みましたが、ちょっと場所を間違えた感が出てきました・・・・。

この場違い感が結構他のつまずきにも影響を与えてきます・・・。

つまずいたポイント2:情報源

未知のものを試すときは何よりも情報源を見つけるのが大切です。
普段はtoBでやってるサービスっぽく情報が全然なくてなかなか難易度がたかい・・・。

今のところ見つけたのはこれらです。

※ドキュメントは12/3に公開されたようです。これからも追加情報とかあるかもしれないので注意が必要そうですね

つまずいたポイント3:流れの理解

そもそも機械学習の初心者過ぎて、全体像の流れがよくわかりませんでした・・・。

  1. 時系列データを収集する
  2. データをクラウドに投げれる形に加工する
    qore_sdk.utilsとかqore_sdk.featurizerを使うと便利らしい。使わなくても可
  3. クラウドにデータを投げて学習させる。このときログインが必要

    メインはqore_sdk.client.classifier_train
  4. 学習データと、比較したいデータを突合して推論をおこなう
    qore_sdk.client.classifier_predict関数

3,4のデータを投げて学習させては1日目の記事がわかりやすいです。

2の加工は2日目の記事がしっかり書かれてるようです。
・・・が、「小時系列に分けて〜」とか「特徴抽出」とかそもそもの部分がよくわからなすぎて挫折しました・・・。

1日目の記事)を見る限り、とりあえずデータさえあればQoreを試せるようです。なので、データ加工のことはとりあえず放置して進めようと思います(後の後悔ポイント)

つまずいたポイント4:ライブラリインストール

公式ドキュメント通りにpip installをやろうとしました。


pip install -r requirements.txt
pip install qore_sdk-0.1.0-XXXXXXXXXXX.whl  #自分の環境に合ったSDK

SDKのリストがこちら

スクリーンショット 2019-12-02 23.29.49.png

自分の環境がこちら

スクリーンショット 2019-12-02 23.35.40.png

・・・mac os の10.13は古すぎてSDK提供していないようです・・・。

仕方ないのでアップデートしました。
スクリーンショット 2019-12-05 21.56.33.png

SDKの名前のcpXXがpythonのバージョンらしいです。python3.7を使っていたのでqore_sdk-0.1.0-cp37-cp37m-macosx_10_15_x86_64.whlをインストールします

つまずいたポイント5:ログイン

メールで貰ったendpoint,username,passwordでログインします。

from qore_sdk.client import WebQoreClient

username = 'xxxx'
password = 'xxxx'
endpoint = 'xxxx'

client = WebQoreClient(username, password, endpoint=endpoint)

ここはブログにも書いてあったし楽勝!って思ったらエラーが・・・・

urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)>

エラー全文
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 1317, in do_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/http/client.py", line 1229, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/http/client.py", line 1275, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/http/client.py", line 1224, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/http/client.py", line 1016, in _send_output
    self.send(msg)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/http/client.py", line 956, in send
    self.connect()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/http/client.py", line 1392, in connect
    server_hostname=server_hostname)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ssl.py", line 412, in wrap_socket
    session=session
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ssl.py", line 853, in _create
    self.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ssl.py", line 1117, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/kido/PycharmProjects/qore-qiita/index.py", line 6, in <module>
    endpoint='https://api-beta2.qcore.co.jp') #接続先エンドポイント
  File "qore_sdk/client.pyx", line 40, in qore_sdk.client.WebQoreClient.__init__
  File "qore_sdk/client.pyx", line 73, in qore_sdk.client.WebQoreClient._login
  File "qore_sdk/client.pyx", line 63, in qore_sdk.client.WebQoreClient._request
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 525, in open
    response = self._open(req, data)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 543, in _open
    '_open', req)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 503, in _call_chain
    result = func(*args)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 1360, in https_open
    context=self._context, check_hostname=self._check_hostname)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 1319, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)>

SSLの証明書が駄目だったらしい・・・。

調べてるとSSL認証を無視するという悪魔のコード👿を見つけたので追記して実行します


import ssl
ssl._create_default_https_context = ssl._create_unverified_context

無事ログインできました!

※なお、このエラーはQoreさんのサーバーの問題ではなく、完全に自分のPCの環境の問題です。googleさんにもアクセスできませんでした・・・。

躓いたポイント6:データフォーマット

データを学習させるためにどんなデータをサーバーに投げればよいか、ですが、ドキュメントのこちらに書いてあります
https://qcore-info.github.io/advent-calendar-2019/index.html#qore_sdk.client.WebQoreClient.classifier_train

スクリーンショット 2019-12-05 23.27.57.png

書いてはあるんですが、時間じゃなくて時間方向ってなんだ??データ数が配列の1つとしてあるの?? みたいに混乱状態に陥りました。

そしてここでアドベントカレンダーのタイムリミットでした。

まとめ

社外の人の最初のアドベントカレンダーがこんなのでとても申し訳ないです・・・
まだ自分には機械学習は早かったようです・・・・。

ここらへんの部分がちゃちゃっとおわったら、距離センサつかってドアの開け方で個人判定できないかなとか、ミニ四駆チキンレースにAI搭載のせられないかとか思ってましたが、それ以前の問題でした。

アドベントカレンダーをみんなが書いて知見がたまってきたらまたチャレンジしようと思います。

よくわからなかった単語集

acc : accuracy。正確さ。 1がより良くて0が駄目
f1 : f値。精度と再現率の調和平均。・・・ってなんだろう?1に近いとと良さそう
変量数 : ??
特徴抽出 : ??
小時系列:??

7
1
4

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
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?