Web Application: 第4回 画像データをnpyデータに変換

こんにちはKeita_Nakamori(´・ω・`)です。

前回flickrから取得した画像データをTensor Flowが読めるように数値データに変換していきます。

必要なモジュールをインストール

  • pip install Pillow :
  • pip install scikit-learn :

Pillow-6.1.0とscikit-learn-0.21.3が入りました

スクリプト:generate_inputdata.py

実行しましょう

(djangoai) C:\Users\keita\anaconda_projects\djangoai>python generate_inputdata.py

フォルダを見ると新しく「image_files.npy」  609,516,317 (609MB?)のデータが生成されました。

次回

Web Application: 第5回 はじめてのwebアプリ

 

 

Web Application: 第3回 flickr(フリッカー)で画像収集

こんにちはKeita_Nakamori(´・ω・`)。

flickrのサイトから画像を引っ張ってきてTensorFlowに流すサンプルデータにしようと思います。

登録とAPIキーの取得

トップページの一番下のDeveloperをおしてAPIキーのリスエストを行います。まずはメルアドの登録などをやってサインアップします。

そうすると APIキーのリスエストができるようになりますので、APIキーを取得します。

flickrapiのインストール

flickrのapiにアクセスするためのモジュールflickrapiをインストールします。

VSコードのコマンドプロンプト内で、

PS C:\Users\keita\anaconda_projects\djangoai> pip install flickrapi

とすると、flickrapi-2.4.0 が入りました。が、これは使えません。

Anaconda プロンプトでconda activate djangoで仮想環境にはいり(djangoai) C:\Users\keita>pip install flickrapi します。

flickrapi-2.4.0が入りました。

Imageをdownloadするスクリプト

ではflickrapiを使ってimageを取得していきましょう。djangoaiフォルダ内へ新たにdownload_images.pyを作成します。

Imageを保存するフォルダを作成

車とバイクの画像をいれるフォルダを作っておきます。

  • (djangoai) C:\Users\keita\anaconda_projects\djangoai>mkdir car
  • (djangoai) C:\Users\keita\anaconda_projects\djangoai>mkdir motorbike

スクリプトを実行する。

仮想環境(conda activate djangoai)に入って、まずはモーターバイクの画像を収集しましょう。

(djangoai) C:\Users\keita\anaconda_projects\djangoai>python download_images.py motorbike

じゃんじゃん入ってきました。

次回

Web Application: 第4回 はじめてのwebアプリ

 

Web Application: 第2回 VS codeのインストールとセッティング

こんにちは Keita_Nakamori(´・ω・`) です。

前回はTensor Flowの試運転に成功しました。

今後アプリ開発をやっていく上でVSコードを使っていこうと思います。PyCharmよさようなら・・・。

VSコードのインストール

https://code.visualstudio.com/でWindows版を選択してインストーラーをダウンロードした後、実行します。

Pathは通しておきましょう。再起動後、画面左側にあるExtentionsボタンをおして、検索窓でpythonと入力して、pythonをインストールしましょう。

データ収集プログラムを作ってみる

では、左上のエクスプローラーボタンを押して、第1回目に作成した keita>Anaconda_projects>djangoaiフォルダを選択しましょう。

Jupyter Notebookで作成した tensorflow_test.ipynbが入っています。

練習のためHello World をやってみましょう

djangoaiフォルダの右側にNew Fileボタンを押してhello_world.pyを作ります。

右側のウィンドウにスクリプトが書けるように成りますのでテキトーにhello worldをプリント出力しましょう。

実行方法

どのPythonバージョンを使用するかの選択

メニュー>View>Command Pallet>Select interpriterで

第1回目で作成した仮想環境であるdjangoai:condaのPython3.7.4 64-bitを選択します。

画面の下に青い帯で変更されたことが確認できます。

ついでにpylintが入っていませんようと警告がでますのでInstallしましょう。condaかpipか聞かれますのでcondaにしてみました。

実行

スクリプト窓内で右クリックをしてrun python file in terminal します。

するとコマンドプロンプト窓内で実行されます。

次回

Web Application: 第3回 はじめてのwebアプリ

 

 

Web Application: 第1回 Anaconda3のインストールと仮想環境構築

こんにちは、Keita_Nakamori(´・ω・`)です。

webアプリというものを少し作ってみたいと思います。

  • 言語                     :Python
  • 機械学習             :TensorFlow
  • フレームワーク:Django
  • データベース      : MySQL
  • サーバー             :Xserver

あたりを使っていきます。

Anacondaのインストール

Anaconda 2019.07 for Windows Installerをインストールしました。

PathとRegister 両方ともチェックをいれました。

仮想環境djangoaiを作って、ついでにtensorflowを入れます。

Anaconda プロンプトを開いて、

(base) C:\Users\keita>conda create -n djangoai tensorflow

-nってなんでしょう。

# To activate this environment, use
#
# $ conda activate djangoai
#
# To deactivate an active environment, use
#
# $ conda deactivate

ということなので、

$ conda activate djangoai

して使ってみます。モジュール群を確認してみましょう。

(djangoai) C:\Users\keita>pip list

Package Version
——————– ———
absl-py 0.7.1
astor 0.8.0
certifi 2019.6.16
gast 0.2.2
grpcio 1.16.1
h5py 2.9.0
Keras-Applications 1.0.8
Keras-Preprocessing 1.1.0
Markdown 3.1.1
mkl-fft 1.0.14
mkl-random 1.0.2
mkl-service 2.3.0
numpy 1.16.5
pip 19.2.2
protobuf 3.8.0
pyreadline 2.1
scipy 1.3.1
setuptools 41.0.1
six 1.12.0
tensorboard 1.14.0
tensorflow 1.14.0
tensorflow-estimator 1.14.0
termcolor 1.1.0
Werkzeug 0.15.5
wheel 0.33.4
wincertstore 0.2
wrapt 1.11.2

確かにtensorflow 1.14.0が入っていますね。OKです。

Kerasも自動的に入ってきていますね。

仮想環境を抜けましょう。

(djangoai) C:\Users\keita>conda deactivate

(base) C:\Users\keita>

頭の(djangoai)が(base)に切り替わり仮想環境を抜けたことがわかります。

Anaconda Navigator

次に、Anaconda Navigatorを使ってみます。

Anaconda Navigatorを立ち上げて、Application on  (base)にの部分をdjangoaiに切り替えます。このときまだJupyter NotebookはインストールされていませんのでInstallボタンを押します。完了したらLaunchにボタンが変わりますのでLaunchします。

これでいつものJupyter Notebookが起動しますが。

今回作っていくdjangoaiアプリはユーザーフォルダkeitaの下にanaconda_projectフォルダを作って、その下djangoaiフォルダを作って、その中にスクリプトを入れていきます。

では、Jupyter Notebookを起動したらanaconda_project > djangoフォルダに移動して新規にNewボタン > Python3 しましょう。

TensorFlowの試運転

初心者向けのテストスクリプトがありましたので、実行してみます。

サンプルデータを取得します。

訓練しやすいようにデータを加工します

機械学習モデルと訓練と評価

はい、ちゃんと動きました。

次回予告

Web Application: 第2回 はじめてのwebアプリ

 

機械学習:sklearnで30日間の株価予測をやってみる

前回、pandas_datareaderで株価を取得してpandasで統計処理してmatplotlibで可視化するということをやりました。

今回は機械学習をやっていきましょう。

理屈:

ある1日の株価データのうち、High Low Open Close Volume AdjClose の6データと、さらにOpen Close から算出されるエンジニアリングデータ change を含めて、計7つのデータを入力データとします。(ここまでは前回の話)

その正解データとして、30日後の終値Closeを定義します。

数学モデルは線形回帰モデルを使います。複数の入力データがあるので重回帰分析と呼ばれています。

  • y : 正解データ
  • x1~x7:入力データ
  • a1~a7:回帰パラメータ 偏回帰係数とも呼ばれます
  • error:入力データと正解データの差(誤差) 数学モデル上では切片に相当します

y = (a1*x1) + (a2*x2) + (a3*x3) + (a4*x4) + (a5*x5) + (a6*x6) + (a7*x7) + ierror

たくさんの入力データ(1日1データ)をこのモデルに入力して、正解データと入力データの Σ(ai*xi) の部分との差 errorがトータルでできるだけ小さくなるように、最小二乗法を使って ai を決めていきます。

その結果、予測モデルが確定しますので、30日前から現在までの入力データを代入すれば、それぞれの日に対して30日後の終値が予測されます。

 

# 終値を30日間前にずらしたcolumnを作成します。

ずらされた部分はNaNという値なしの状態で埋められます。

# 入力データを作成します

# 正解データを定義します

# データを訓練用と検証用に分割して、学習モデルを選択して、学習させて、検証します

精度:92% って出ています。(´・ω・`)

# 過去30日間の入力データ predict_data から、それぞれ30日後の未来終値データ predicted_dataを予測します。

# 可視化:予測結果

後ろの黄色いやつが未来の30日間の株価予想です。

Linear Regression でも まあまあそれっぽい答えは帰ってきますね。

機械学習:Scikit-Learn ボストンデータを良く眺めてみる。ついでにKNNの回帰をやる。

Keita_Nakamoriです。

今回は、ボストンの住宅のデータを眺めて行こうと思います。

ついでにKNNの回帰を試していこうと思います。(前回はKNNの分類でした)

モジュール

ボストンデータをロード

どういうことに使えるでしょうか?

  1. このデータから回帰を行う(学習する)
  2. 以降、”特徴量を持つ新規データ”が入ってきたら、その住宅の価格を予測する。理論価格と呼ぶ
  3. 理論価格より、新規データの価格が10%安ければ買いの判断をする

どんな機械学習アルゴリズムが良いでしょうか

多次元の回帰系ですから、KNN-Regressorをやってみましょう。 だめだったら他のやつを探してみます。

  • data とtargetの形を確認しましょう
  • 訓練用データと検証用データに分割しましょう

特徴量について featrue_namesを確認しましょう

英語を日本語へ翻訳する方法

前述のようなドキュメントを調べるとき、対象とする分野、業界の用語が列挙されると、そこそこ英語ができても単語の意味がわかりません。

そんなときは逆にチャンスで、ドキュメントをまるごと、google翻訳にかけると、専門用語を英語と日本語で一気に覚えることができます。

私は常に躊躇することなくgoogle翻訳します。

念の為

#アンパックの順番を良く間違うので念の為確認

#データフレーム化してデータを眺めてみる

スキャッターマトリクスを眺めてみる

今回もデカイです。

訓練開始

一瞬過ぎて何事も起こってないようですが、ちゃんと計算できています

予測

スクリーニングしてみる

20%以上安い物件の数

22件あるんですね。

この22件について、実際に不動産の知識を持って調査すると良いのではないでしょうか。

課題:精度の算出 と 可視化

精度を検証しようとknn.score(X_test,y_test)したところ、0.4616380924610112 と出ましたが、これは一体なんでしょうw

分類と違って、回帰ですから、%ってわけでもないですし・・・ あとで、もう少し考えてみましょう。今は保留。

また、可視化については、回帰ですから、回帰直線みたいなのを引きたいのですが、このような高次元に対しての回帰直線はどのように書いたら良いのでしょうか。今後の課題といたします。

以上、でした。

機械学習:Scikit-learn ブレストキャンサーデータを良く眺めてみる。ついでにKNNをやる。

こんにちはKeita_Nakamoriです。

今日はブレストキャンサーデータを良く眺めてみようと思います。

データをロードしてキーを確認しましょう。

 

キーを指定してデータの内容を確認しましょう

 

おまけ

np.bincount()を使うと 順番に[0の数 , 1の数 , 2の数,・・・]というようなベクトルが得られる

 

勢い余って、KNNをやってしまおう

おわりに

ということで、たったこれだけで、92%の正解率が得られました。

これは、データがしっかり整っているからできることです。

実際に自分自身の課題に対して機械学習を適用しようとすると、データを収集してきれいに整えることにエネルギーを費やすのだと思います。

番外:データフレームとスキャッターマトリクスを眺めてみる

データ数と特徴量が多すぎて、すごいことになっています。

うわ~~~~~ (*´﹃`*)

 

 

機械学習:Scikit-learn アイリスデータでk-最近傍法をやってみる

Keita_Nakamoriです。

前回、アイリスデータの内容を確認しました。

今回は、機械学習で最も単純と思われるk-最近傍法をやっていきます。

  • 必要なモジュールをインポート
  • データをロードして、入力データと出力データを定義

トレインデータ(訓練用)とテストデータ(検証用)に分割する

# データはランダムに振り分けるが,固定し、0という番号を付ける。

X_train のデータをデータフレーム化して、内容を確認する

columns=iris_dataset[“feature_names”] #データフレームの列名を定義
df=pd.DataFrame(X_train,columns=columns)
df[:5]

X_train のデータフレームをpd.plotting.scatter_matrix()で可視化して眺める。

 k- 最近傍法分類 をやってみる

モデルの作成とトレーニング

予測する

予測性能の評価

結果:0.9736842105263158

または、

でもいいです。

機械学習:Scikit-learn アイリスデータを良く見る

Keita_Nakamoriです。

今日はsklearnのアイリスデータを良く見てみようと思います。

インストール

>pip install sklearn

して

Requirement already satisfied: sklearn in c:\users\omoiy\anaconda3\lib\site-packages (0.0)
Requirement already satisfied: scikit-learn in c:\users\omoiy\anaconda3\lib\site-packages (from sklearn) (0.19.1)

と出るので、すでに入っていました。アナコンダですから。

インポートそしてインスタンス作成

アイリスデータが入っている、ロードアイリスをsklearn.datastetsからインポートします。
from sklearn.datasets import load_iris

関数としてロードアイリスのインスタンス、アイリスデータセットを作成します。

iris_dataset=load_iris #ロードアイリス関数

では、アイリスデータセットを見てみましょう。

iris_dataset()

わけのわからないデータの羅列が出てきますが、よく見るとディクショナリによく似た”Bunchクラス”という形式でデータが入っています。

ディクショナリと同様に、キーとバリューを指定できます。

iris_dataset().keys()

キーを指定してみます。長いので500文字で切りましょう。DESCRはディスクドライブの略です。

まずは、データの概要を見る

iris_dataset[“DESCR”][:500]

または、下のように書くと、見やすくなります。

print(iris_dataset()[“DESCR”][:500]+”\n…”)

データセットの特性

インスタンス数:150 (3クラスあり、それぞれ50個)

アトリビュートの数:

4つの予測用アトリビュート(数値)

  • sepal長さ[cm] sepal 幅 [cm]
  • petal長さ[cm] petal 幅 [cm]

クラス(分類)

  • Iris-Setosa
  • Iris- Versicolour
  • Iris-Virginica

訓練用のインプット”データ”を確認する。

iris_dataset()[“data”]

.shape()で大きさを確認すると(150, 4)。4つの予測用アトリビュートをもった塊が150個ある。

正解である”ターゲット”を確認する

iris_dataset()[“target”]

  • 0=Iris-Setosa
  • 1=Iris- Versicolour
  • 2=Iris-Virginica

なのでしょう、きっと。

ターゲットの名前

iris_dataset()[“target_names”]

ここで出てきました。分類名。前述で予想した通りの順番でした。

特徴の名称を確認する

これも、DESCRでの記述順通りでした。

以上、ロードアイリスのデータでした。

次回は訓練させていきます。