#author("2020-04-03T16:26:11+09:00","","")
#author("2020-04-03T22:58:58+09:00","","")
[[木村]]~
[[木村/Research Subject]]~
[[木村/Meeting]]~
*Index of Tables(Memo) [#m0a2c3ff]
#contents
**HomeBrew [#i151cc56]
HomeBrewはMacOSに提供されているアプリケーション&color(red){一元管理ツール};です.~
インストールするパッケージと依存関係にある必要なものを自動的に補完し,~
また,アンインストールの際に不要なゴミを残さずにクリーンにアンインストールが可能です.~
MacOSを使用している人にオススメのツールです.~
~
+HomeBrew インストール~
~
ターミナルを起動し,以下のコマンドを実行します.~
 $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
 $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
実行すると途中で,
 Press RETURN to continue or any other key to abort
と表示されるのでEnterを押します.~
その後,パスワードが要求されるので,自分のアカウントのパスワードを入力してください.~
しばらくするとHomeBrewのインストールが完了します.~
~
+HomeBrewのチェック(飛ばしても大丈夫)
 $ brew doctor
 Your system is ready to brew.
と表示されればOK.~
もし,Worningが出ても対処コマンドが表示されるので,そのコマンドを実行すれば大丈夫.~
~
+HomeBrewの更新
 $ brew update
 Already up-to-date.
HomeBrewの更新はこまめに行いましょう.~
~
+インストール済みパッケージの確認・アンインストール~
~
以下のコマンドを実行すると,インストール済みのパッケージが確認できます.
 & brew list
また,パッケージのアンインストールは,
 $ brew uninstall 'パッケージ名'
で実行できます.~
~
***Pythonの開発環境構築(pyenv) [#t21f3689]
+pyenvのインストール~
~
pyenvはHomeBrewを使ってインストールしましょう.コマンドは以下のものを実行します.
 $ brew install pyenv
実行後は,パスを通すために以下のプロファイル書き換えのコマンドを実行します.
 $ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
 $ exec $SHELL -l
~
※&color(red){注意事項:Mac OS Catalina以降は,シェルがbashからzshに変更されているため,Catalina OSをしようしている方は以下を参照してください.};
 $ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
 $ exec $SHELL -l
 $ zsh -l


+Python(Anaconda)のインストール~
~
以下のコマンドでインストール可能なバージョンが表示されます.
 $ pyenv install -l
自分の構築したい開発環境に応じてインストールするバージョンを変えましょう.~
※&color(red){Python2系はMacOSに標準インストールされています.};~
~
今回は,Python3系のインストールを紹介します.~
Python3系をインストールしたい場合は,anaconda3-x.x.xのいずれかをインストールしましょう.
 $ pyenv install anaconda3-x.x.x
 $ pyenv global anaconda3-x.x.x
globalは開発環境の変更宣言です.これでPython3系が利用できるようになりました.~
※&color(blue){ディレクトリごとに開発環境を変えるlocalもありますが,今回は説明を省きます.};~
~
+Pythonのバージョン確認~
~
以下のコマンドでインストールされているPythonのバージョン一覧が確認できます.
 $ pyenv versions
+Jupyter Notebook・Jupyter Labの利用(Labの推奨)
 $ jupyter notebook
あるいは,
 $ jupyter lab
をターミナルで実行することによりそれぞれ起動することができます.~
現在,Notebookの開発は行われておらず,Labの開発が進められています.~
なので,&color(red){Jupyter Labの利用を推奨します.};~
~
control + cを押すと,
 Shutdown this notebook server (y/[n])?
と表示されるので,yを入力しEnterを押すと元のシェルに戻ります.~

***JDKのインストール [#m46c3d01]
+Javaの過去のバージョンをインストールするために,まずhomebrew-cask-versionsをHomebrewに追加します.
 $ brew tap homebrew/cask-versions
~
+Javaのインストール~
~
Java(最新のバージョン:2019年7月5日現在の最新バージョンはJava SE 12)
 $ brew cask install java
Java 11
 $ brew cask install java11
Java 8(ライセンスの関係上インストールできないので違うものを代用)
 $ brew cask install adoptopenjdk8
または,
 $ brew cask install corretto8
~
+インストール済みのJDKの確認
 $ /usr/libexec/java_home -V
 Matching Java Virtual Machines (3):
     12.0.1, x86_64: "OpenJDK 12.0.1"    /Library/Java/JavaVirtualMachines/openjdk-12.0.1.jdk/Contents/Home
     11.0.2, x86_64: "OpenJDK 11.0.2"    /Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home
     1.8.0_212, x86_64:  "AdoptOpenJDK 8"    /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
 
 /Library/Java/JavaVirtualMachines/openjdk-12.0.1.jdk/Contents/Home
 $ /usr/libexec/java_home --help
 Usage: java_home [options...]
     Returns the path to a Java home directory from the current user's settings.
 
 Options:
     [-v/--version   <version>]       Filter Java versions in the "JVMVersion" form 1.X(+ or *).
     [-a/--arch      <architecture>]  Filter JVMs matching architecture (i386, x86_64, etc).
     [-d/--datamodel <datamodel>]     Filter JVMs capable of -d32 or -d64
     [-t/--task      <task>]          Use the JVM list for a specific task (Applets, WebStart, BundledApp, JNI, or CommandLine)
     [-F/--failfast]                  Fail when filters return no JVMs, do not continue with default.
     [   --exec      <command> ...]   Execute the $JAVA_HOME/bin/<command> with the remaining arguments.
     [-R/--request]                   Request installation of a Java Runtime if not installed.
     [-X/--xml]                       Print full JVM list and additional data as XML plist.
     [-V/--verbose]                   Print full JVM list with architectures.
     [-h/--help]                      This usage information.
~
+JDKの切り替え~
~
Java SE 12
 $ export JAVA_HOME=`/usr/libexec/java_home -v "12"`
 $ PATH=${JAVA_HOME}/bin:${PATH}
Java SE 11
 $ export JAVA_HOME=`/usr/libexec/java_home -v "11"`
 $ PATH=${JAVA_HOME}/bin:${PATH}
Java SE 8
 $ export JAVA_HOME=`/usr/libexec/java_home -v "1.8"`
 $ PATH=${JAVA_HOME}/bin:${PATH}
~

***Julia [#we6af7c7]
+Juliaのインストール~
~HomeBrewでJuliaをインストールするには以下のコマンドを実行します.
 brew cask install julia
~
+IJuliaのインストール~
IJuliaはJupyter Notebook・Jupyter LabでJuliaを扱うためにインストールします.~
始めに,Juliaのコンソールを起動します.
 $ Julia
                _
    _       _ _(_)_     |  Documentation: https://docs.julialang.org
   (_)     | (_) (_)    |
    _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
   | | | | | | |/ _` |  |
   | | |_| | | | (_| |  |  Version 1.1.1 (2019-05-16)
  _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
 |__/                   |
 
 julia>
起動すると上記の画面になります.~
次に,パッケージインストールを行うためにPkgをインポートします.~
 julia>using Pkg
PkgはPythonでいうpipと似た役割を持ちます.~
Pkgをインポートしたら,次にIJuliaをインストールします.
 julia>Pkg.add("IJulia")
インストールが終われば,IJuliaをビルドします.
 julia>using IJulia
Jupyterを起動しJuliaの選択画面が増えていれば完了です.~

**Google Colaboratory [#x5502791]
-GPUを使用しながらPythonができるらしいぞ!!!
--https://cpp-learning.com/python_colaboratory/
--https://qiita.com/tomo_makes/items/b3c60b10f7b25a0a5935
-&color(red){※スワップ領域が存在しないので大規模データの解析・モデル構築はできない};

**MySQL [#ve476589]
-MySQL 逆引きリファレンス(わからないことはここに書いてるかも)
--http://mysql.javarou.com
-MySQL コマンド・操作方法など(こっちの方が強そう)
--https://www.dbonline.jp/mysql/
-MySQL データ削除の際に気をつけること(TRUNCATEを使用すれば問題なし)
--https://qiita.com/hmatsu47/items/a779213a71c3c1f72763
-MySQL フラグメンテーションの確認とその解消方法
--https://yohei-a.hatenablog.jp/entry/20180610/1528650004
-MySQL データの自己結合方法
--https://www.dbonline.jp/mysql/select/index17.html

**Python [#ea16b212]
***PythonからMySQLへのアクセス [#v7bbf32e]
MONSTER-HYのDocker MySQLに構築されているデータベース「SOTorrent」の使用方法についてです.~
~
-使用するために,今回mysql-connector-pythonを使用しています.~
インストールしていない場合は以下のコマンドを実行してインストールしてください.
 $ pip install mysql-connector-python
データベースのコンフィグスクリプト [&attachref(MySQLConfig.py);]~
MySQLからデータ取得を簡単にしたスクリプト [&attachref(RedirectQueryMySQL.py);]~
※''ダメダメスクリプトなので改良してください.''~
~
-上記の2つのスクリプトは同じディレクトリに保存してください.~
--%%MySQLConfig.pyのsshの接続設定に関して,ポートは3306で設定してあります.%%~
--MySQLConfig.pyのsshの接続設定に関して,ポートは4309に変更してください.~
--ポートフォワーディングをする際は,ローカルポートを4309,リモートポートを4309でバインドしてください.~
--ローカルポートはご自分で変えていただいて大丈夫です.~
-%%RedirectQuery.pyを実行するとデータベース接続のパスワードを要求されるようにしています.%%~
%%パスワードはいつもの魚釣りのやつです.%%
--追記:getpassだと接続が不安定だったため辞めました.~
~
-サンプルではinput()を用いてSQLクエリを入力するようにしています.~
ループ処理を用いたプログラムなど,具体的な処理は目的に応じて自分で記述してください.~
~
-学外からの利用も可能です.学外利用の場合,事前にSSHの設定が必要になります.~
設定については[[データベース用サーバ(MONSTER-HY)の利用方法]]を参照してください.


***可視化ライブラリ Dash [#l124ac03]
まずはDashをインストールしましょう.
 $ pip install dash
簡単なサンプルコードを記述したファイル [&attachref(app.py);]~
 $ python app.py
で実行すると,
 Running on http://127.0.0.1:8050/
 Debugger PIN: xxx-xxx-xxx
と表示されるので,ブラウザで「http://127.0.0.1:8050/」にアクセスすると表示されます.~
~
Dashではその他にも様々な機能があります.(テキストフォームやCytoScape,簡単なウェブアプリ開発など)~
※&color(blue){多機能};すぎて習得が少し難しいですが,使えると''かっこいいのでオススメしておきます''.~
~
自分はコールバック機能まではなんとか理解しましたので,もし興味があれば微力ながらお手伝いいたします.~
さらに詳しく知りたい場合は,下のURLにある公式ドキュメントを参照してください.~
-https://qiita.com/OgawaHideyuki/items/6df65fbbc688f52eb82c
-https://dash.plot.ly
-https://plot.ly/python/reference/ (グラフのパラメータなど)
***Pandas [#dcabcb1f]
-csvファイルで書き出すときに文字化けしないためのエンコーディング
 DataFrame.to_csv('ファイル名', encoding = 'utf_8_sig')

***PythonでPDF→テキスト→エクセルに変換 [#uf73648c]
処理の流れ
+Apache Tika(tiki-python)を用いてテキスト変換~
※ファイル名が長すぎるとエラーが起きる
+正規表現を用いてパターン検出,一文判定,文の連結

***other [#gfd8452c]
-JupyterLabでのDash利用ライブラリ(使い方がよくわからんので注意)
--https://github.com/plotly/jupyterlab-dash
--ライブラリにバグがあるのでおそらく使えません...
-python コードの書き方(参考に)
--https://qiita.com/yinawekuky/items/28d973a653e9825ed582
-JupyterLab おしゃれなプログレスバー
--https://qiita.com/dialectic4th/items/368877009f15b6b551ff
-python 機械学習の環境構築
--https://takaxtech.com/2018/10/09/article266/
-python 深層学習ライブラリKeras 公式ドキュメント
--https://keras.io/ja/
-dask サイズの大きいファイルを読み込むときに使える
--使い方はpandasと同様の使用方法で,処理実行にはcompute()を使用する
--https://qiita.com/kodai_sudo/items/c2ff1e85da18eaf13b65
-pandas pickleファイルも使用可能
-python 複数の配列の共通要素を抽出する(配列2,3の共通要素を取り出す例)
 [配列1] = set([配列2]) & set([配列3])
**データ分析と [#nd0ecaab]
-文書の意味的類似度(Doc2Vec)
--https://deepage.net/machine_learning/2017/01/08/doc2vec.html
-レコメンド精度の評価指標
--http://blog.brainpad.co.jp/entry/2017/08/25/140000
***基礎知識一覧掲載ページ [#kfaf92aa]
-統計学
--https://www.albert2005.co.jp/knowledge/statistics_analysis
-クラスター分析
--https://www.albert2005.co.jp/knowledge/data_mining
-機械学習
--https://www.albert2005.co.jp/knowledge/machine_learning
***機械学習 [#z76ae859]
-アクティブラーニング
**Other [#f14dd3dd]
-pip アップデートコマンドとその他諸々
--https://qiita.com/HyunwookPark/items/242a8ceea656416b6da8
***Mac ショートカットキー [#d95fa86c]
-command + shift + G:ファイルパス検索
-command + Q:アプリケーションの終了
-command + R:リロード
-command + H:ウィンドウを隠す
-control + D(もしくは,fn + delete):WindowsでいうDeleteキー
-control + K:カーソル右側文字の全削除
-control + A:カーソルを行頭に移動
-command + shift + 3:全画面スクショ
-command + shift + 4:選択範囲スクショ

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS