node.jsのWebサーバからPythonでファイルをダウンロード

<システム構成>

サーバ:node.jsのWebサーバ

クライアント:Python実行

 

<やりたいこと>

クライアントからサーバにあるファイルをダウンロードする。

今回は、クライアントとサーバは同じPC。

 

以下、参考にしたサイト。

qiita.com

 

www.shibuya24.info

 

 

pandasでデータの相関分析 Mac

統計の問題を Python で実際に計算してみる

[Python] pandasを使ってcsvファイルの読み込み

 

上記の記事を参考にして、試して見ます。

test.csv

95,-10,110
5,-40,108
60,5,100
100,-5,101
33,0,93
5,-10,91
0,0,88

 

sample.py

import pandas as pd
xxx = pd.read_csv('test.csv') #xxxは適当な変数

print (xxx) # 全カラムの出力

 

これでとりあえず実行してみる。

$ python sample.py 

    95  -10  110

0    5  -40  108

1   60    5  100

2  100   -5  101

3   33    0   93

4    5  -10   91

5    0    0   88

 test.csvのデータが出力された。

 

matplotlib をインストールする。

$ pip install matplotlib

 

色々と試してみた。

 

import seaborn as sns

import pandas as pd

import numpy as np

import matplotlib as mpl

import matplotlib.pyplot as plt

import scipy as sp

 

data = pd.read_csv("data2.csv", 

names=[

'Temp1', 'TempMax1', 'TempMin1', 'Rain1', 'Sun1', 'Wind1'

# 'Temp2', 'TempMax2', 'TempMin2', 'Rain2', 'Sun2', 'Wind2',

]

)

df2 = data.describe()

print(df2)

 

 

from pandas.tools.plotting import scatter_matrix

#plt.figure()

scatter_matrix(data)

plt.show()

plt.savefig("image.png")

 

# heat map

#sns.heatmap(sm)

 

 

df = data.corr()

 

print(df)

 

sns.heatmap(df,annot=True, fmt='.2f')

plt.show()

 

# 値を取り出す

temp = data.iloc[:,0].values

TMax = data.iloc[:,1].values

TMin = data.iloc[:,2].values

Rain = data.iloc[:,3].values

Sun  = data.iloc[:,4].values

Wind = data.iloc[:,5].values

 

# temp TMax の回帰式

slope, intercept, r_value, p_value, std_err = sp.stats.linregress(temp, TMax)

print(slope, intercept, r_value)

 

# temp Rain の回帰式

slope, intercept, r_value, p_value, std_err = sp.stats.linregress(temp, Rain)

print(slope, intercept, r_value)

 

気象庁ホームページから、気温などのデータを取得した。

気象庁|過去の気象データ・ダウンロード

 

f:id:marchantime:20180716211145p:plainf:id:marchantime:20180716211141p:plain

 

 

 

 

 

 

 

pandasでデータの相関分析 Mac (準備)

まずはpandasのインストールから。

brew install pyenv

でエラーが出たので、MacOSをHigh Sierraにアップデート。

f:id:marchantime:20180716115820p:plain

もう一度、pandasのインストール。

$ brew install pyenv

Warning: You are using OS X 10.13.

We do not provide support for this pre-release version.

You may encounter build failures or other breakage.

とのこと。

$ brew install python3

でも同じような結果になった。

brewのアップデート。。。

$ brew update

warning: unable to unlink .yardopts: Permission denied

warning: unable to unlink CONTRIBUTING.md: Permission denied

warning: unable to unlink SUPPORTERS.md: Permission denied

fatal: cannot create directory at '.github': Permission denied

Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master

これもエラー。

 

$ cd $(brew --prefix)

$ pwd

/usr/local


$ sudo chown -R $USER $(brew --prefix)

$ sudo chown -R $USER $(brew --prefix)

chown: /usr/local: Operation not permitted

$ sudo chown -R $(whoami) $(brew --prefix)/*

としたらコマンドは通ったが解決していない。

macOS High Sierra で Ansible 入れようとしたら失敗した。

に書いてあったが、High Sierra では上記操作ができない。


$ git fetch --all

$ git fetch --all

Fetching origin


$ git reset --hard origin/master

$ git reset --hard origin/master

warning: unable to unlink .yardopts: Permission denied

warning: unable to unlink CONTRIBUTING.md: Permission denied

warning: unable to unlink SUPPORTERS.md: Permission denied

fatal: cannot create directory at '.github': Permission denied

 

本当は、chownを1つずつ実行すれば良かったらしいが、

brewの再インストールをしてしまった。。

 

brewを再インストール。

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

 

再び、Python3をインストールを試す。

$ brew install python3

$ which python3

/usr/local/bin/python3

ようやくできるようになった。

 

$ brew install pyenv

$ export PYENV_ROOT="$HOME/.pyenv"

$ export PATH="$PYENV_ROOT/bin:$PATH"

$ eval "$(pyenv init -)"

バージョンチェック。

$ pyenv install --list

3.7.0が最新の様だった。

pyenvとは、複数バージョンのPythonを簡単に切り替えられるツールらしい。

$ pyenv versions

* system (set by /Users/masahiro/.pyenv/version)

  3.7.0

 

pipを使ってパッケージをインストールする。

$ easy_install pip

$ pip list

Package    Version

---------- -------

pip        10.0.1 

setuptools 39.0.1 

 

$ pip install pandas

Collecting pandas

Collecting python-dateutil>=2.5.0 (from pandas)

Collecting pytz>=2011k (from pandas)

Collecting numpy>=1.9.0 (from pandas)

Installing collected packages: six, python-dateutil, pytz, numpy, pandas

Successfully installed numpy-1.14.5 pandas-0.23.3 python-dateutil-2.7.3 pytz-2018.5 six-1.11.0

$ pip install scipy

$ pip install pyparsing

$ pip install freetype-py

$ pip install scikit-learn

$ pip install django

$ pip install tornado

 

$ pip freeze

Django==2.0.7

freetype-py==2.0.0.post6

numpy==1.14.5

pandas==0.23.3

pyparsing==2.2.0

python-dateutil==2.7.3

pytz==2018.5

scikit-learn==0.19.2

scipy==1.1.0

six==1.11.0

tornado==5.1

 

よし、これで準備が出来た。

 

人工知能って何ができるの?

最近流行りの人工知能

人工知能がどんなものなのか、イメージをつけるためにまずは使ってみます。

 

2015年11月にGoogleが公開した、DeepLearningのライブラリ「TensorFlow」を選びました。選んだ理由としては、一番メジャーなので。

https://9to5google.files.wordpress.com/2015/11/tensorflow-lead.jpg

Macを使っているので、

Mac OS XにTensorflowをインストールして、Hello worldまでやってみる - ワタナベ書店

を参考にしてやってみます。

 

OSXのVirtualenv(仮想環境モジュール)上に、TensorFlow環境を構築

・TensorFlow環境に入るには、$ source ~/tensorflow/bin/activate

・実行するには、$ python helloworld.py でHelloWorldが実行できる

・元の環境に戻るには、(tensorflow) $ deactivate

 

簡単にできました。

 

次は、画像認識をやってみます。

ディープラーニングの有名ライブラリ5種を最短距離で試す半日コース(TensorFlow, Chainer, Caffe, DeepDream, 画風変換) - Over&Out その後

を参考にします。

 

・MNISTのチュートリアルスクリプトを実行 →dataディレクトリが生成

・TensorBoardで学習状況を可視化 →学習回数と不正解のグラフを表示

 

ができました。

 

ここまでは簡単にできました。プログラムの内容を理解していないので、TensorFlowで何ができるのか、今の時点では良く分かりません。

色んな事例を探して、勉強してみます。

 

 

MacでMQTTを体験

Raspberry PiにMQTT Brokerをインストール - Qiita

がやりたいが、まずはMacでMQTTを動かしてみる。

 

MQTTの挙動をMacで確認する - 発熱するマイナ魂

を参考にしました。

 

 

まずは、Mosquitto Brokerのインストール

sudo xcodebuild -license

でライセンス契約にagree。

$ brew install mosquitto

を実行して、

🍺  /usr/local/Cellar/mosquitto/1.4.2: 28 files, 700K

とインストールが完了した。

 

次に、Publisher/Subscriberの準備

$ git clone http://git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.python.git
$ cd org.eclipse.paho.mqtt.python.git
$ sudo python setup.py install

でgit clone。

サンプルプログラムを作成。

 

そして、動作確認。

ターミナル1 (Broker) メッセージを集める人

$ /usr/local/opt/mosquitto/sbin/mosquitto


ターミナル2 (Subscriber) メッセージを読む人

$ python subscriber.py


ターミナル3 (Publisher) メッセージを送る人

$ python publisher.py

 

動作結果
ターミナル2に以下が表示された。成功。

topic/hoge hello world!

 

 

websocket

www.tettori.net

 

http://localhost:3000

 

を参考にしてWebSocketが動いたので、今日は、 

 

Node.jsを使ってみよう(1):Node.js、Socket.IO、MongoDBでリアルタイムWeb (1/2) - @IT 

Node.jsを使ってみよう(2):Node.js、MongoDBでデータの保存 (1/4) - @IT

 

を参考にして、MongoDBを使ってみます。

 

まず、rootになってmongodでデータベースを起動させる。

su -

mongod

 

別ウィンドウで、

node app.js 

 

mongooseを使ってmongodbにアクセスしてみる - A Peak Never Ending !

 に書いてあったのが参考になった。

 

ちなみにコレクション名を指定してる場所がないけど、mongooseはモデル名を lower caseにしてsを付けた名前をコレクション名として使うっぽい(この場合はmemosがコレクション名になる) 

 

ということらしい。memoなら、memosがコレクション名。

別のサンプルを触っていて、コマンドラインからコレクションにアクセスできなかった原因はこのためだったらしい。

 

var Memo = db.model('memo',MemoSchema);

 

とした場合、コレクション名は、memosになる。

なので、コマンドラインからアクセスする場合は、

use demo

db.memos.find( )

で、データベースの中身が見られる。

 

 ▪️今度はC言語からDBにアクセスする

Release Mongo-c-driver 1.1.9 · mongodb/mongo-c-driver · GitHub

からC言語ドライバをダウンロード。

 

./configure

make

 

 でオブジェクトが生成された。

 

C言語でMongoDBを使う - Qiita

を参考にしてみる。

 

 

 

 

 

LeapMotion LeapJS+Ball Poolで遊ぶ

HTML5のサンプル

http://www.mrdoob.com/projects/chromeexperiments/ball-pool/

を、LeapMotionのジェスチャー認識を使って遊んでみます。

 

手を掲げると、手が表示されます。

f:id:marchantime:20130905014438p:plain

 

 

指をタップしてLeapMotionが認識できるジェスチャーをします。

すると、ボールが生成されて、画面の下の方に落ちていきます。

f:id:marchantime:20130905014451p:plain

 

まずはここまでです。