LogoMark.png

GoogleColaboratory のバックアップ差分(No.1)


#author("2021-12-06T16:06:18+09:00;2021-12-06T13:24:44+09:00","default:inoue.ko","inoue.ko")
* Google Colaboratory
すぐに使える Python の開発環境
~

Google Colaboratory とは、Googleの仮想マシン上で動くIPythonの実行環境で、[[Jupyter Notebook>https://jupyter.org]] を利用します。Googleアカウントがあれば、ブラウザから誰でも無料で利用できます。特にAIを含むデータサイエンス系の開発では、クラウド上のGPU環境が使える点で、ローカル環境よりも優れています。登場以来、非常に注目を集めている存在です。
https://colab.research.google.com

また、[[Jupyter Notebook>https://jupyter.org]] は、ブラウザ上で Python のコードの編集とインタラクティブな実行ができるだけでなく、テキストドキュメントを挿入したノートとして情報共有する仕組みを実現したオープンソースのWebアプリケーションです。数値シミュレーション、統計モデリング、データの視覚化、機械学習などを得意とする、総合的なデータサイエンスツールです。

参考:[[__Python iPython についてはこちら__>Python]]
~
~

***CONTENTS
#contents2_1

~
~

**Introduction
#youtube(inN8seMm7UI)
~
~


**利用方法
***Colaboratoryにアクセスしてノートを準備
#image(login.jpg,right,30%)
-公式サイトにアクセス
https://colab.research.google.com
-画面右上のログインをクリックして、Googleのアカウントでログインします。
#clear
-ファイル> ノートブックを新規作成
-Untitled0.ipynb というファイル名を適宜変更 
-ノートは [[GoogleDrive]] の ''Colab Notebooks''というフォルダに自動保存されるので安心です。
~

***Jupyter Notebook の使い方
[[Jupyter Notebook>https://jupyter.org]]には、コード(プログラム)を書くための''コードセル''と、テキスト(ノート)を書くための''テキストセル''の2つがあります。この2つのセルを使うことで、見出し・解説・プログラムを文字通り「ノート」のようにまとめることができます。

-コードを追加する場合は「+コード」をクリックします。
-新たなコードセルが追加されるので、そこにプログラムを書きます。
-コードを実行する場合は「▶」をクリックします。
-コードセルの直下に結果が表示されます(変数の値は保持されています)。

-ノートを書く場合は「+テキスト」> テキストセルが追加されます。
-[[Markdown]]記法を用いて、見出しや箇条書き等のスタイルが使えます。

-セルの上下(処理の順序)は、セルに付随して表示されるアイコン「 ↑ ↓ 」を使って変更することができます。
~

***留意事項
Googleアカウントがあれば、誰でも無料で利用できますが・・
-連続使用が12時間を経過すると対話がシャットダウンされます。
-90分間アクセスがない場合もシャットダウンされます。
-シャットダウンされた場合、変数に記憶されたデータは初期化されます(次回ノートを開いた際は、最初のコードから順に処理することになります)。
-とは言っても、ノートに書かれたコードやテキストは GoogleDrive に保存されていますので、Pythonの学習目的での利用では問題ありません。
~
~

**活用事例
***初歩的な対話処理

#image(rename.jpg,right,40%)
-ファイル> ノートブックを新規作成

-ファイル名を変更 > 例:Sample01.ipynb
#clear

-コードセルが1つ表示されて、プログラムが書ける状態になっています。
#image(code_cell.jpg,,80%)

-▶のボタンのある枠内に、以下のように書いてみて下さい。1行目は「 5 x 3 の計算結果を a に代入する」という意味で、2行目は「 a の内容を表示する」という意味です。
 a = 5 * 3
 a
-▶(RUN)のクリックでプログラムが実行され、処理結果が表示されます。
 15

-「+コード」でコードセルを追加して、以下のように書いてみて下さい。
 b = a *2
 b
-当該セルの▶のボタンをクリックすると処理結果が表示されます。なお、前のセルで定義した変数( a:15 )は、後のセルで使用できる前提です。
 30
#image(result.jpg,,80%)

-と、こんな感じで、対話的に作業を進めることができます。

#image(save.jpg,right,40%)
-マイドライブを確認してみて下さい。 ''Colab Notebooks''というフォルダにノートが保存されていることが確認できると思います。
#clear
~

***Pythonライブラリの活用

Google Colaboratory では Jupyter Notebook で利用できるライブラリーが「すべてインストール済み」という前提なので、ローカル環境での作業のように、必要なライブラリのインストールを行う必要はなく、コードセルに import 文を書くだけで使うことができます。

-ファイル> ノートブックを新規作成

-ファイル名を変更 > 例:Sample02.ipynb

-''画像を読み込んで表示する事例''
 import io
 import requests
 import PIL
 
 response = requests.get(" https://・・画像データのURL ")
 PIL.Image.open(io.BytesIO(response.content))
 
#image(sample01.jpg,,80%)
~

-''グラフを表示する例''
 import matplotlib.pyplot as plt
 
 x_values = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
 y_values = [50, 100, 120, 80, 180, 130, 70]
 
 plt.bar(x_values, y_values)
 plt.plot()
 
 plt.show()
 
#image(sample02.jpg,,80%)
~

-''参考:ワーニング(警告)を非表示にする例''
ノートとして公開する際、警告が視覚的に邪魔になる場合があります。以下のようにすると、警告を非表示にすることができます。
 import warnings
 warnings.resetwarnings()
 warnings.simplefilter('ignore', FutureWarning)
 warnings.simplefilter('ignore', RuntimeWarning)
~
~

**コマンド操作

***Coraboratory における Shell コマンド
shell とはファイル操作やプログラムを実行させるコマンドを入力するシステムです。デフォルトで用意されていないライブラリー等を利用する場合は、shellコマンドを使ってインストールすることができます。

shell コマンドを実行したい場合は、コードセルの中で以下のように''コマンドの頭に [ ! ] を付けて記載''します。Linux のコマンドも使えます。

-システムのバージョン情報を表示
 !cat /etc/issue
#image(command.jpg,,80%)

-Python のバージョンを確認
 !python --version
 Python 3.6.9

-ライブラリのアップデート等 > pip コマンドが使えます。
 !pip install --upgrade numpy

-インストールされている全てのライブラリとバージョンを確認
 !pip freeze
 absl-py==0.10.0
 alabaster==0.7.12
 albumentations==0.1.12
 altair==4.1.0
 argon2-cffi==20.1.0
  :

-''参考:グラフ表記で日本語が豆腐になるのを避けるには''
japanize-matplotlibをインストールして使います。
 !pip install japanize-matplotlib
 
 import matplotlib.pyplot as plt
 import japanize_matplotlib 

~

***Coraboratory におけるマジックコマンド
マジックコマンドは iPython の独自機能で、コマンドの頭に [ % ] を付けて記載します。以下のようにディレクトリの操作をする場合などに用いられます。
 %mkdir test
 %ls
 sample_data/  test/


&aname(file);
~
~

**GoogleDrive の利用
google.colab ライブラリの利用で Google Drive と連携できます。
 from google.colab import drive
~

***ドライブのマウント
以下の記述で GoogleColab の /content/drive にMy Drive がマウントされます
 from google.colab import drive
 drive.mount('/content/drive')

-URLが表示されて認証コードの入力が求められます。
 ・・・Enter your authorization code:
--URLをクリックすると Googleアカウントを選択する画面が出てくるので、使用したいアカウントを選択。続いて Google Colab に Google Drive へのアクセス許可を与える確認画面が出るので「許可」をクリック。
---表示されたコードを認証コードの入力を求めている部分( Enter your authorization code:)にペーストします。

-以上で /content/drive の My Drive ディレクトリ以下にあなたのGoogle Driveのファイルがマウントされます。以下、マウントに成功した結果。
#image(mount.jpg,,80%)
~

***GoogleDrive 上のファイルの利用
-正しく連携できていれば、以下のコマンドで Google DriveのMy Driveのデータが表示されるはずです。
 !ls '/content/drive/My Drive'

-例えば、My Drive 内の CSV や Excelファイル を活用するには・・
 import pandas as pd
 df = pd.read_csv("/content/drive/My Drive/path/to/sample.csv")
 df = pd.read_excel("/content/drive/My Drive/path/to/sample.xlsx")
などとしてデータフレームに読み込むことが可能です。
&small(フォルダ・ファイル名は日本語でもOKのようです。);
~
~

**ファイルのアップロード・ダウンロード
google.colab ライブラリの利用で、ファイルのアップダウンが可能です。
 from google.colab import files
~

***アップロード
以下の記述で実行すると [ファイル選択] ダイアログが開いて Google Colab上にデータをアップロードすることができます。
 # GoogleColab のファイル操作機能の読み込み
 from google.colab import files
 # ファイルのアップロード
 uploaded = files.upload()
 
  [ファイル選択] sample.jpg
 sample.jpg(image/jpeg) - 92287 bytes, last modified: 2020/8/21 - 100% done
 Saving sample.jpg to sample.jpg
以下、アップロードの実行例
#image(upload.jpg,,80%)
~

***ダウンロード
以下の記述で Google Colab上のデータをダウンロードできます。

 # GoogleColab のファイル操作機能の読み込み
 from google.colab import files
      :
 # プロットされた画像を保存
 plt.savefig('sample.png')
 # ファイルのダウンロード
 files.download('sample.jpg')
~
~

**その他の機能
***ノートブックのアップ・ダウン
以下、Google Colab とローカルでファイルの行き来が可能です。
 ファイル >ノートブックをアップロード
 ファイル >.ipynb をダウンロード
~

***Notebook の公開について
GitHub のアカウントに連動して GitHubでノートブックの公開が可能です。
 ファイル > GitHub にコピーを保存
~
~

**APPENDIX
***関連ページ
-[[DataScience]]
-[[ArtificialIntelligence]]
-[[ArtificialIntelligence/Links]]
-[[Data]]
-[[Statistics]]
-[[DataVisualization]]
-[[MachineLearning]]
--[[DecisionTree]]
--[[k-means]]
--[[LinearRegression]]
--[[LogisticRegression]]
--[[NeuralNetwork]]
--[[PrincipalComponentAnalysis]]
--[[RandomForest]]
--[[SupportVectorMachine]]
-[[DataMining]]
-[[Python]]
--[[Pandas]]
--[[scikit-learn]]
-[[GoogleColaboratory]]
-[[Orange]]
-[[OpenData]]
~
~