Google Colabでなでしこを使ってみよう *

Googleアカウントさえあれば、Googleが用意する高性能マシン上でなでしこを動かすことができます。

(1) Colabにアクセス *

Colabを始めるには、まず以下のWebサイトにアクセスし、Googleアカウントでログインします。そして、新規ノートブックをさくせいします。

(2) なでしこの利用を宣言 *

Colabではなでしこを実行できるNode.jsエンジンが最初からインストールされています。そのため、以下のコマンドを1回実行するだけで、PC版なでしこ(cnako3)のコマンドが使えるようになります。

! npm install -g nadesiko3

上記コマンドを入力したら実行ボタンを押します。すると、なでしこのコマンド(cnako3)が使えるようになります。

(3) なでしこをコマンドライン上で実行する *

なでしこのコマンドを1行実行するには、以下のように書きます。

!cnako3 -e "1+2*3を表示。"

あるいは・・・

!cnako3 -e "3回、「🐕わん」と表示。"
cnako3を一行実行したところ
cnako3を一行実行したところ

このように、「!cnako3 -e "xxxx"」と書くとなでしこのプログラムを一行実行できます。

(4) なでしこのソースコードを書き込む場合 *

以下のように書くと、なでしこのソースコードをファイル「a.nako3」に保存できます。

%%file a.nako3
3回繰り返す
  「😸にゃー」と表示。
ここまで。

続けて、以下のコマンドを実行すると、保存したプログラムを実行できます。

!cnako3 a.nako3
プログラムを書き込んで実行する方法
プログラムを書き込んで実行する方法

Colabをチャットサーバーとして使おう *

ちょっと工夫すると、Colabにサーバーを立ててチャットサーバーとして利用できます。
以下のコマンドをColab上で実行します。

!/bin/bash -c "$(curl -fsSL https://n3s.nadesi.com/plain/colab_install_websocket.sh)"

(2022/07/01追記) なお、多くの部分で下記の記事が参考になるのですが、Cloudflaredのインストール方法が古くなっています。

# 以下のコマンドでcloudflaredをインストールしてください。
# cloudflared をインストールする
! apt update
! wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
! sudo dpkg -i cloudflared-linux-amd64.deb

また、チャットのプログラムも、以下のものを利用してください。

なでしこローカルWebサーバーを起動する *

上記cloudflaredをインストールした後、以下のコマンドを実行します。

! npm install -g nadesiko3
! $(npm -g bin)/nako3server & cloudflared tunnel --url localhost:3000

そして、Colabに表示された、https から始まるアドレスにアクセスしてください。以下の赤丸で囲ったURLです。

colab-server.png
colab-server.png

同じように、なでしこのローカルエディタも使えます。

! npm install -g nadesiko3
! $(npm -g bin)/nako3edit & cloudflared tunnel --url localhost:8888

機械学習を実践してみよう *

次に機械学習を実践してみましょう。以下のコマンドを実行すると、なでしこの機械学習ライブラリをインストールできます。

!npm install nadesiko3-ml

XORを学習する例 *

ライブラリをインストールしたら、プログラムを作りましょう。
内容はともかく、以下のプログラムを実行すると「xor.nako3」というファイルを作成します。

%%file xor.nako3
!「nadesiko3-ml」を取り込む。
# SVMでXORデータを学習する例
XORデータ=[[0, 0], [1, 1], [1, 0], [0, 1]]
XORラベル=[0,0,1,1]

# --- SVMを使う場合 ---
{}でSVM開く
# 学習
XORデータとXORラベルで学習。
# 予測
A=[[0,0],[1,1],[1,0]]で予測
AをJSONエンコードして表示。# [0,0,1]

実行してみましょう。

! cnako3 xor.nako3

すると、学習結果である[0,0,1]と表示されます。うまく動いたでしょうか?

アヤメの分類データを試そう *

続いて、機械学習の初歩、アヤメの分類データを試してみましょう。

%%file iris.nako3
# SVMでIrisデータを学習する例
!「nadesiko3-ml」を取り込む
{'kernel':'RBF', 'type':'C_SVC'}でSVM開く

# Irisデータを取得して、ランダムに分割する
Y=アヤメデータ取得。
R=Y['データ']とY['ラベル']を0.8でデータランダム分割
# 学習
R['学習']['データ']とR['学習']['ラベル']で学習。
# 予測
PRED=R['テスト']['データ']で予測。
# 正解率を求める
R['テスト']['ラベル']とPREDで正解率計算して表示。

プログラムを保存したら以下で実行できます。

!cnako3 iris.nako3

すると・・・以下のように0.96の確率で分類できたことが分かります。

0.9666666666666667