初心者必見 GPU環境構築〜SSH接続〜

SSH接続

LinuxのSSH接続を行います. 以下を参考にさせて頂きました.
参考:SSHなるものをよくわからずに使っている人のための手引書 - Qiita

そもそもSSH接続が分からんという方は以下を参照してください.
参照:はじめてのssh

SSH接続するために, 秘密鍵と公開鍵を設定します.
流れは以下のように, クライアントで鍵を作成して, サーバーに公開鍵を送信する手順で進めていきます.
https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417141402.png

また, 以降では, 以下のように定義します.
【クライアント】: クライアント(機能を使う側)の操作
【サーバー】: サーバー(機能を提供する側)の操作


1.【クライアント】公開鍵と秘密鍵を作成

以下のコマンドで, ~/.sshディレクトリが作成され, その中に公開鍵(id_rsa.pub)と秘密鍵(id_rsa)が作成されます.

ssh-keygen

※パスフレーズの変更

ssh-keygen -p

2. 【クライアント】公開鍵のコピーをサーバー側に送信

scpコマンドを使いセキュアにファイルをコピーして, サーバーに送信します.
ユーザー名はlinuxの〇〇@××:~となっている〇〇のところです.
ipアドレス(xx.xx.xx.xx)はhostname -I | cut -d ' ' -f1で確認できます.

scp ~/.ssh/id_rsa.pub (サーバーのユーザー名)@(サーバーのipアドレス):~

3.【サーバー】公開鍵をauthorized_keysに追加

サーバーに対する操作は直接サーバーのシェルで操作するか, クライアントで以下のコマンドからパスワード認証することで可能になります.
1.公開鍵がコピーされていることを確認する

cd ~ && cat id_rsa.pub

2..sshディレクトリを作成

mkdir ~/.ssh

3..sshのパーミッション変更

chmod 700 ~/.ssh

4.~/.ssh/authorized_keysを作成

touch ~/.ssh/authorized_keys

5.~/.ssh/authorized_keysに追加

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

6.authorized_keysのパーミッション変更

chmod 600 authorized_keys

4.【クライアント】秘密鍵を用いることでサーバーにSSH接続できることを確認

以下でログイン可能です.
最初のログインはパスワード認証が必要ですが, 一度ログアウトexitして再度ログインする際にパスワード認証されずにログインできれば, 無事終了です!

ssh (サーバーのユーザ名)@(サーバーのipアドレス)

5.【サーバー】rootログイン・パスワードログインを禁止する

セキュリティ上の面からrootログインを禁止しましょう. また, 鍵認証の設定をしてのでパスワードログインも禁止してしまいましょう.

Emacsのインストール

その前に今回はEmacsを使って編集するのでEmacsをインストールしましょう. 以下を参照ください.
インストール
Ubuntu 18.04 にEmacsをインストール。設定まで - Qiita
使い方
突然だがEmacs を始めよう - Qiita
emacs コマンド一覧(置換・コピー・検索・終了)

もし, Emacsがまだよく分からないという方は, emacs ファイル名open ファイル名とすれば, txtファイルで編集できるのでそちらをご利用下さい.

では, 実際に設定を変更していきます.
rootログインして, sshd_configファイルを編集します. PermitRootLoginPasswordAuthenticationと書いてある行を探してnoと変更してください.

#rootログイン
su -
emacs /etc/ssh/sshd_config

===================================================================

# rootログイン禁止
PermitRootLogin no

# パスワードログイン禁止
PasswordAuthentication no

設定を変更したら sshサーバーを再起動します.

/etc/rc.d/init.d/sshd restart


6.【クライアント】SSHログインの簡略化

毎回ログインするたびにssh (サーバのユーザ名)@(ipアドレス)と入力するのはかなり面倒ですよね.
そこで~/.ssh/config.bash_profileで設定することで, 簡単にログインできるようにします!
初めに~/.ssh/configファイルで設定を加えます.

emacs ~/.ssh/config

===================================================================

Host *
   UseKeychain        yes
   AddKeysToAgent    yes
   IdentityFile    ~/.ssh/id_rsa

#Hostの後にサーバに対して固有な名称をつける(ここではhoge)
Host hoge
    HostName (ipアドレス)
    User (サーバのユーザ名)

これによりssh hogeのみでサーバにSSH接続できるようになります.

ssh hoge

さらに簡略化してみましょう!
.bash_profileで設定します. 以下のように設定することで, hogeを実行することで, ssh hogeが行われます.

emacs ~/.bash_profile

===================================================================

hoge() {
    ssh hoge
}

変更の反映

source .bash_profile

以下のようにhogeだけでSSH接続できるようになりました!

hoge


7. SSHファイル転送の簡略化

.bash_profileでファイル送信・ファイル受信の関数を定義することで
簡単にクライアントとサーバーでファイルを転送できるようにします.

emacs ~/.bash_profile

===================================================================

hoge() {
    ssh hoge
}

USER=(ユーザー名)

#idアドレス取得関数
function hostname_of() {
    host=$1
    result=command ssh -G $host | awk "/^hostname / { print $2 }" | cut -c 10-
    return $result
}

#ファイル送信 rsyncto hoge 送信場所のパス(クライアント) 受信場所のパス(サーバ) 
function rsyncto() {
    host=$(hostname_of $1)
    localpath=$2
    remotepath=$3
    echo $USER@$host:$remotepath
    command rsync -avz $localpath $USER@$host:$remotepath
}

#ファイル受信 rsyncfrom hoge 送信場所のパス(サーバ) 受信場所のパス(クライアント)
rsyncfrom() {
   host=$(hostname_of $1)
   remotepath=$2
   localpath=$3
   command rsync -avz $USER@$host:$remotepath $localpath
}

これによって, 例えば以下のように, クライアントの~/hogehogeをhogeサーバーの./に送信することができます!

rsyncto hoge ~/hogehoge ./

初心者必見 GPU環境構築〜UbuntuインストールからNvidia・Cuda・Cudnn・深層学習ライブラリインストールまで〜

mac から ubuntu 18.04の環境構築

デスクトップのGPUサーバーをGETしたのですが, 無知すぎて, ネットで検索しまくって数日かけてようやく環境構築が終了しました.
とても苦労したので, 一連の流れをまとめました. ところどころ詳細については, 他の方がとても丁寧に解説しているのでそちらのサイトを紹介しています.

マシンスペック

僕のGPUサーバーのスペックです.
GPU2枚(GeForce GTX 1080)・6コア12スレッド (Core i7-8700K)です.
https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417010940.png

GPUサーバーの組み立てについては, 割愛させて頂きます.
組み立て終えたところから, UBuntuのインストールから基本的な環境構築までのお話をします.

USBを使ってGPUサーバにUbuntuを入れる

ブートUSB作成

組み立てた直後は, OSが何も入っていないのでまずはOSをインストールします. そのために, まず, 別のPCからUSBにUbuntu OSの情報をダウンロードします (ブートUSB・ライブUSBと呼ぶ). その次に, ブートSBをサーバーに接続してUbuntuをインストールします. ブートUSBの作成は, 以下の手順を追えば, スムーズにできます.

ブートUSBの作成 (for mac)
MacでUbuntu18.04LTSのブートUSBを作成する - Qiita

ブートUSBの作成 (for windows)
WindowsにUbuntuをインストールするのは気持ち良いゾイ!!~導入編~ - Qiita

UEFI BIOSの設定

ブートUSBの作成後は, サーバーにUSBを接続して起動させます. ただし, サーバーがUSBを読み込んでくれるように, UEFI BIOSで設定を行う必要があります. UEFI BIOSを起動させるためには, 電源起動後すぐにF2 or ESCを押し続れば画面が切り替わります (機種によって異なる可能性あり). 以下のようなカッコイイ画面になればUEFI BIOSが起動しています.
次に, Advanced modeをクリックします.
https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417133536.jpg

そうしたら, Bootに移動し, Boot MenuからブートUSBを選択します.
https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417133540.jpg

最後に, Ezmodeで先ほどの画面に戻り, Save & Exitをクリックすれば, 再起動してUbuntuがインストールされます.

その後は, Ubuntu 18.04 LTSインストールガイド 3.3章から順に進めれば, 初期設定は完了です.

アプリケーションインストール

まず初めに必ず以下のアプリケーションでソフトウェアの更新を行いましょう!
https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417015435.png

必要なアプリPICK UP!

機械学習系で使いそうなものを中心にPICK UPします.

Google Chrome

Google Chrome ウェブブラウザ

Emacs

以下のコマンドでインストール可能

sudo apt install emacs

Vscode

Download Visual Studio Code - Mac, Linux, Windows

Pycharm

Download PyCharm: Python IDE for Professional Developers by JetBrains

インストールがやや面倒なので以下を参照
参照:UbuntuでPyCharmインストールからHello Worldまでやってみた - Qiita

※pycharmがアプリケーションに表示されていない場合
./pycharm.sh実行後ConfigureのCreate Desktop Entryで表示できるようになる.
https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417020309.png

Guake (ターミナル)

以下のコマンドでインストール可能

sudo apt-get install guake

F12でターミナルを即座に表示・非表示できて非常に便利!もちろん設定で透過もできる!
https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417020835.png

Slack

ダウンロード | Slack

Line

Linuxでは, アプリ版はないためGoogle Chromeの拡張機能をインストールします.
「LINE」をLinuxで使う方法 | LFI



もっと色々設定したいという方は以下を参照してください.
参照:Ubuntu 18.04 LTSのインストール直後にやっておきたいことまとめ | LFI

GPUを使うために・・・

ここからが本題です. GPUを使用するためには, 主にNvidia driverとcudaをインストールする必要があります.

Nvidia driverインストール

以下のコマンドを実行 (Ubuntu18.04でだいぶ簡単になった模様). nvidia-smiでNvidiaが正常にインストールされたか確認できます. また, GPU Nameで名前が確認でき, 枚数も把握できます (2枚の場合GPUの0と1が存在)

sudo ubuntu-drivers autoinstall
#再起動
sudo reboot
#挙動確認・以下の図のように表示されれば問題ない
nvidia-smi

https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417022315.png

Minicondaのインストール

Minicondaのインストールをします. Anaconda, MinicondaどちらでもOK. AnacondaやMinicondaが分からない・どちらが良いか迷っている方は以下を参照してください.
参照:AnacondaとMinicondaの比較、どちらで環境構築するべきか | 生物・化学系でもIT()したい

Minicondaのインストールは以下のコマンドを実行

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
#インストールの最後に,pathを.bashrcに追加するか聞かれるのでYESとする
bash Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc

仮想環境構築

condaで仮装環境を構築します. 仮装環境について分からない場合は以下を参照してください.
参照:【初心者向け】Anacondaで仮想環境を作ってみる - Qiita

pythonのバージョンを指定して仮装環境py36を作成します (今回はpython 3.6を指定)

 conda create -n py36 python=3.6

cudaインストール

以下を参考にさせて頂きました.
参考:Tensorflow GPU Installation Made Easy: Use conda instead of pip

まずは, NVIDIA driverのversionを確認します.

#NVIDIA driverのversion確認
nvidia-smi

https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417024245.png

次に, cudaとNVIDIA driverの対応を確認します.
(NVIDIA driverとcudaのバージョンの相性が悪いと最悪フリーズして, OSインストールからやり直しになるので, 必ず対応を確認しましょう!)
https://cdn-ak.f.st-hatena.com/images/fotolife/m/munemakun/20190417/20190417024456.png
参照:Release Notes :: CUDA Toolkit Documentation

cudaのインストール (対応するバージョンを指定)

#対応するバージョンを指定
conda install cudatoolkit==X.X

cudnnのインストール

cudaと対応するバージョンのcudnnがインストールされるはずです.

conda install cudnn

深層学習ライブラリインストール

ライブラリをインストールします. 今回は, Tensorflow-gpuとKeras-gpuをインストールします. ただし, condaとpipをどちらかに統一しましょう.
参考:condaとpip:混ぜるな危険 - onoz000’s blog

#tensorflow-gpu
conda install tensorflow-gpu
#keras-gpu
conda install keras-gpu


最終確認

TensorflowでGPUを認識するか確認します. 下記のように表示されれば問題なく終了です!

python
>>>import tensorflow as tf
>>> tf.test.gpu_device_name()
... ... ...
... ... ...
... ... ...
'/device:GPU:0'

※CUDA driver version is insufficient for CUDA runtime version
と表示された場合は,CUDAのバージョンがNVIDIA driverのバージョンに対応していない可能性が高いです

conda仮装環境の使用

最後にcondaで作った仮装環境のよく使うコマンドを紹介します.

環境の作成

conda create -n 環境名 python=x.x インストールするパッケージ名

環境の削除

conda remove -n 環境名 --all

作成した環境の一覧を見る

conda info -e

環境を切り替える

source activate 環境名

環境を出る

conda deactivate

macとipadでデュアルしたら便利すぎた

デュアルしたい...

自宅や研究室ではPCとモニターでデュアル(デュアルディスプレイ)で作業していますが, 出かけたときや図書館で作業する時は, 当然モニターは持ち運ぶことはできないので, デュアルはできません.
ですが,ipadをモニター代わりにすることができます!
これでどこでもデュアルで作業できるので完璧です!


=============================
2020/05/07 : 追記
Catalinaで, アプリを使わなくてもipadでデュアル接続できるようになりましたね^^
=============================

f:id:munemakun:20181201233703j:plain



Duet Display

macだけでなくwindowsにも対応しています.
Duet Displayという2つのアプリをインストールして設定するだけで完成です.
初期設定が完了すれば, ipadでアプリを起動して接続するだけで自動的にデュアルになります.
もちろんミラーリングもできます.

macとipadにインストール

mac

Duet Display公式ページからインストール(無料)
www.duetdisplay.com

ipad

Apple Storeからインストール


ios に接続できませんでした

僕はインストールした後,すぐに接続したところ"ios に接続できませんでした"とPCの方で表示されてしまいました.
以下の"Duet -iOS"を何度もクリックしても接続されませんでした.

もし, 僕のように初めて接続するときに接続できない場合は, PCを再起動すれば解決します!
どうやらPCでインストールした後には必ずPCの再起動が必要なようです.

自炊のすゝめ

本の自炊ってご存知でしょうか?ご飯を作る自炊しか知らんと言う方もいるかもしれません.
本の自炊とは自分でpdf化した本を作ると言うことです.
本の自炊のメリットと手順について紹介します.

自炊のメリット

自炊をすること,つまり紙の本をデータ化させることのメリットは何でしょうか?
家から全ての本をデータ化させたら本が全て無くなりますのでかなり家がすっきりします.これが最大のメリットです.
僕は家にある70冊以上の本を全て自炊してpdfにしました.下の図のように大量の本が一枚の板(ipad)になりました.おかげで家から本棚が消えました.
f:id:munemakun:20181122034348j:plainf:id:munemakun:20181122034347j:plain
Before After

自炊 VS 電子書籍(著作権あり)

自炊するなら電子書籍を買えばいいじゃんと思いますよね.しかし電子書籍を販売しているサービス(kindleやibooksなど)は著作権ありのepub形式で販売しているため買ったサービスの提供しているアプリでしか見ることができません. ですが自分で購入した本をpdf化させればkindleだろうとibooksだろうとどんなアプリでも見ることができます.さらに自由に書き込みもできます.少し面倒臭いかもしれませんがより自由に使いたいならば自炊することをお勧めします.

法律的に自炊はやって良いことなのか

自炊は法的に大丈夫なのか下の図を表を見て確認しましょう.この表によると[2],[4],[6]は本を買った個人の判断で行って良いということです.つまり,自分で使うのため本を自炊する[2]・本を家族で自宅のサーバーで共有する[4]・裁断本を他人に渡す[6]/売る/買う(売ると買うについてはここでは明記されていないが引用元からおそらく適法という判断が出されている)ことは問題ないです.
しかし,自炊本のpdfを他人に送る[1]・pdfを販売する[1,5]は違法となります.また自炊代行を利用する[1]はかなりグレーですが違法となる可能性があるので利用するのはやめておきましょう.

まとめると,自分のために自炊をすることは問題にならないし,現物(裁断本)を買うも売るも問題ないが,複製物(pdf)を他人に譲渡したり売ってはならないということです. 自炊本のpdfは自分が使用する分には問題がありませんが,自分以外が関わる場合は注意しましょう.

f:id:munemakun:20181122041321p:plain
引用元:https://internet.watch.impress.co.jp/docs/special/393769.html

自炊の手順

自炊はとても簡単です.

  1. 裁断機で裁断
  2. ドキュメントスキャナでスキャン

まずは裁断機で裁断です.切断機で下のように切断します.僕は大型裁断機・ペーパーカッター 400枚裁断 BA58A4を使用して裁断しました.切れ味がとても良くて入門Python3(600ページ)を一発で切断できました.ただし重さは17kgあるのでかなり重いです.また, 右下の写真のように, 多少切り口が斜めになってしまいます.読んでいても僕は何も気になりませんが,もっと真っ直ぐに切りたいという方はもっと高いものを買った方が良いです.

f:id:munemakun:20181122040758j:plainf:id:munemakun:20181122040905j:plain

次はドキュメントスキャナで裁断本をスキャンします.僕は富士通 ScanSnap iX500 (A4/両面)を使用しました.これはかなり自炊をするにあたって一般的なもので,まずこれを買っておけば間違い無いです.他のドキュメントスキャナを買う場合は必ずOCR機能があるものを選びましょう.OCR(Optical Character Recognition/Reader)とは画像から文字を認識する装置のことです.つまりOCR機能があると画像中の文字をpdf上で文字として認識できるということです.これは通常のプリンタ(よく家や学校あるプリンタ)には無い機能です.wifi設定でコードレスで通信することができて,スキャンしたデータをパソコン上やクラウド上に直接保存することができます. 無事保存できれば終了です.

f:id:munemakun:20181122040212j:plainf:id:munemakun:20181122045624p:plain

まとめ

僕の場合は裁断機とドキュメントスキャナを買うだけで5万以上かかりました.どうしても自炊はこの2点は必須なので初期投資が高くなってしまいます.ですが, ヤフオクやメルカリで裁断済みの本が売られています.裁断済みなので定価よりも安くなっています.そのように本を仕入れることだってできます.しかも何より家から全ての本がなくなるわけですからとても家がきれいになって,タブレットさえあれば読みたい本をいつでも読むことができるようになるので金額以上にメリットがあると思います.この機会に自炊デビューしてみましょう!


ipad+google driveが最強!

論文を読んだり,本を自炊して読んだりするためにipad pro 10.5を購入しました.
値段は高かったですが,満足しています.

論文や本を読むためにどのようにipadを活用するかを紹介します.

本はストリーミングで読む

iphoneを使っていると写真の撮りすぎやアプリの入れすぎでストレージ容量が足りないことがあると思います. 本のデータも同じように端末内に保存していくと一気に容量オーバーになってしまうことがあります. でもストリーミングを使えば端末の容量を気にする必要はありません!
ストリーミング※で本を読むというのは,自分の端末に入っているデータを読むのではなく, クラウド上にあるデータを読み込んで読むというものです.
これにより, 自分の端末のストレージの容量を使わずにデータを保存することができます.

f:id:munemakun:20181122013628p:plain

※ストリーミングはネットワークを使用するので,ネット通信ができないところでは本を読むことができなくなる.そのような場合は,あらかじめ今自分の読みたい本だけローカル(自分の端末内)に保存しておくのが良い.


データはGoogleドライブに

クラウドでデータ保存するサービスはGoogle driveの他にもDrop boxやOne driveなど様々なものがあります.
ただ,僕はGoogleドライブ※をお勧めします.
まずGoogleドライブは無料で使える容量が15GBであり,Dropbox(2GB)やOne drive(5GB)と比べて最も多いです.
15GBも無料で使えるのは嬉しいですね.

さらにこれは一部の大学生限定になりますが, googleの生涯アカウントを作成している大学に通う学生は1人1つの生涯googleアカウントを在籍中も卒業後も持つことができます.なんとこの生涯アカウントのGoogleドライブは容量が無制限で使えます!
とてもお得なので,自分の通っている大学に生涯アカウントがあるかどうか調べた方が良いです.また卒業してしまってもアカウントを作ることができると思うので,是非調べてみてください.筑波大生の生涯アカウントについてはこちら



※2018年からgoogleドライブはバックアップと同期という名前に変更されましたが,バックアップと同期というサービスの中にgoogleドライブはあります.

Googleドライブと連携できる特選アプリ

Googleドライブに保存した本や論文にアクセスできるおすすめアプリを紹介します.

1.ComicShare

  • ローカル(端末内)やクラウド(GoogleDrive,OneDrive,Dropbox,Box)にあるデータを本のように読むことのできるアプリ
  • 対応するフォーマットはzip, rar, pdf, 7zip, lzh, tar, epub, jpg, png, gif, bmp, webp とかなり豊富
  • 480円かかる有料アプリだが, その分広告もなく使いやすい
  • 本を読むようにページをめくることができて, 読み込み速度も早いので快適に読める
  • 本棚は見やすいので目的の本を探しやすい

ComicShareは何より対応するフォーマットが豊富なのが最大のメリットです. pdfの他にもzipやrarなどの圧縮ファイルを対応しているところがとても嬉しいです. 紙の本を読んでいるかレベルで読みやすいです.ComicShareという名前ですが対応するフォーマットなら論文でも何でも読めますw


2.GoodNotes 4

  • ローカル(端末内)やクラウド(GoogleDrive,OneDrive,Dropbox,Box,iCloudDrive)にあるpdfに書き込みをすることができてノートとしても使えるアプリ
  • 980円かかる有料アプリだが, こちらもその分広告もなく使いやすい
  • iPad/iPhone/Macで同期可能
  • 書き心地もよく,遅延も発生しない
  • pdfの書き込みの他にもノートとしても使える
  • 選択した範囲をスクショすることができる
  • 写真や画像を貼り付けることができる

論文や本を読んでいる時に書き込みやマーカーを引きたくなると思います.そんな時にGoodNotesを使うことで自由に書き込みをすることができます.ペンの色は上の画像以外(100種以上) 選択できるし消しゴムも使いやすいです. 上の画像のように選択した範囲を簡単にスクショできるのは地味に嬉しいです.
何よりGoodNotesがあれば,pdfに書き込みができてノートも使えるんでこれで紙は不要になりますね!


3.Mendeley

  • pdfのファイル名を自動で論文のタイトルに書き換えてくれるアプリ
  • 容量2GBまで無料

論文をpdfで保存すると,意味わからないファイル名になりませんか.わざわざ手で書き換えるのって面倒くさいですよね.そんな操作を自動でしてくれるアプリがMendeleyです.
基本無料ですが容量制限が2GBです.ですが,MendeleyとGoogleドライブを同期する設定を行えば問題ないです.つまり,一回Mendeleyで論文のpdfを読み込めば自動でファイル名を変更して,Googleドライブに同期してくれます.そのあとはMendeleyからその論文を削除してもGoogleドライブにはファイルが残るので,Mendeleyの容量をほとんど使うことなく使用することができます!Mendeleyの操作方法についてはこちらのスライドを参照していただけるとわかりやすいです.

まとめ

Googleドライブに保存することでストレージ容量を気にせずにデータを管理することができることを説明して,本や論文を読む時にGoogleドライブと連携することができて便利なアプリを3つ紹介しました.下に流れをまとめました.
f:id:munemakun:20181122031926p:plain



ISLR読みました

もともとKaggleで話題になったXGBoostについて知りたいと思ったのですが
そもそもRandom ForestやBoostingについてよくわかっていなかったので
まずそこから勉強しようと思いました.

ブースティング入門で大まかな概要を把握してから
An Introduction to Statistical Learning with Applications in R(ISLR)の8章~10章まで読みました.

実は5章までは過去に読んでいたのですが,それっきりになっていました.
ちなみに木については8章に書かれており,9章はSVM,10章はPCAやClusteringについて書かれています.


読んだ感想としては,そこまで詳しくまでは書いてありませんが大まかな概要と基本的な事についてはしっかりと押さえられいます.
説明も丁寧で例も多く挙げられているので理解しやすかったです.Rによる実装例も書かれています.
特に,単に数式の説明だけでなく,基本となる概念の説明だったり,グラフを用いて視覚的に理解させてくれることが多かったところが非常に良かったです.

あまり難しい数式は出てこないので,機械学習初心者でも読みやすいと思います.
読み始めにISLRはとてもオススメです.

自分的には少し物足りないので他の本も読んでみようかなと考えています.

無料でpdfを入手できます.
https://www-bcf.usc.edu/~gareth/ISL/
Introduction to Statistical Learning



次はESL(通称:カステラ本)を読もうかと思います.
こちらも無料でpdfを入手できます.
https://web.stanford.edu/~hastie/ElemStatLearn/
The Elements of Statistical Learning


ESLは日本語版が発売されています.ただしかなり高いので無料で読める原著をオススメします.
https://www.amazon.co.jp/%E7%B5%B1%E8%A8%88%E7%9A%84%E5%AD%A6%E7%BF%92%E3%81%AE%E5%9F%BA%E7%A4%8E-%E2%80%95%E3%83%87%E3%83%BC%E3%82%BF%E3%83%9E%E3%82%A4%E3%83%8B%E3%83%B3%E3%82%B0%E3%83%BB%E6%8E%A8%E8%AB%96%E3%83%BB%E4%BA%88%E6%B8%AC%E2%80%95-Trevor-Hastie/dp/432012362X/ref=sr_1_1?ie=UTF8&qid=1541300601&sr=8-1&keywords=%E7%B5%B1%E8%A8%88%E7%9A%84%E5%AD%A6%E7%BF%92%E3%81%AE%E5%9F%BA%E7%A4%8E
統計的学習の基礎 ―データマイニング・推論・予測

よく使うモジュールを起動時に自動インポート

起動時に自動的に実行させるには

~/.ipython/profile_default/ipython_config.pyの設定を変更します.
もしこのファイルがない場合は,shellで以下のコマンドで作成します.

ipython profile create

~/.ipython/profile_default/ipython_config.pyc.InteractiveShellApp.exec_lines = [...]に実行したい処理をを追加します.

僕のipython_config.pyファイルはこんな感じです.

matplotlibを日本語対応にする

matplotlibを日本語化

matplotlibでタイトルを日本語で書くと文字化け(▫︎▫︎▫︎←こんな感じ)してしまいます
デフォルトではmatplotlibで日本語は使用できません.
Qiitaでとても簡単な日本語化が紹介されていたので,こちらを引用しました.
pip install して import するだけで matplotlib を日本語表示対応させる - Qiita

1.Shellで以下のコマンドを実行する

pip install japanize-matplotlib

2.日本語を使用するときに以下のモジュールをインストール

import japanize_matplotlib


何度もモジュールのインストールのコマンドを打つのがめんどくさい!自動で読み込んでほしいという方は
~/.ipython/profile_default/ipython_config.pyに書き込むことで起動時に自動的に読み込まれます!
詳しくはよく使うモジュールを起動時に自動インポートを参考に