地域密着型エリア広告配信リクルートの地域密着型広告ドコイク?アドネットワーク Ads by ドコイク?[無料でホームページを作成] [通報・削除依頼]
[無料でホームページを作成] [通報・削除依頼]

機械学習とpython

 理論や手法などは左欄にある「機械学習」をご参照ください。
-----------------------------------------------------------------------
◆ テキスト
・株式会社システム計画研究所「Pythonによる機械学習入門」オーム社
 pandasでのExcelデータ読み込みやその後の処理の方法が書かれている。
・株式会社フォワードネットワークら「実装ディープラーニング」オーム社
 いくつか難しいところもあるが、OSやcudaのインストール方法も図付きで説明されており、第一原理計算の導入にも役立つ情報が記載されている。学習係数の更新のための具体的な数式も記述されている。
・Sebastian Raschkaら「達人データサイエンティストによる理論と実践 Python機械学習プログラミング」インプレス
 Jupyter Notebookの基本的な使い方やmatplotlibによる可視化の基礎、行列の計算などについても書かれている。
・クジラ飛行机「Pythonによるスクレイピング&機械学習」ソシム
 基本的なことが綺麗にまとまっているので、これを見ながらコードを打ち込む練習をすると機械学習の学習が容易になる。
-----------------------------------------------------------------------
◆ お勧めのHP
・OS毎python環境構築法(特におススメ):
   http://qiita.com/y__sama/items/5b62d31cb7e6ed50f02c
・日本語のDeep Learningの解説(機械学習の記述有り。特におススメ):
   https://www.slideshare.net/yasutomo57jp/python-deep-learning
   https://www.slideshare.net/yasutomo57jp/pythondeep-learning-60544586
 サンプルコード
 ・https://github.com/yasutomo57jp/ssii2016_tutorial
 ・https://github.com/yasutomo57jp/deeplearning_samples 
・日本語のpythonの解説(機械学習の記述有り。特におススメ):
 http://www.turbare.net/transl/scipy-lecture-notes/index.html
・機械学習でなんとなく材料研究者の気分を味わおう
 http://qiita.com/KentoObata/items/7fd8c7527d586dffc329
 http://qiita.com/KentoObata/items/a909ecc42c8805594c89 (pymatgen)
・Anaconda3を入れた後,python2.7を使いたくなった時の環境構築法
   http://qiita.com/LittleWat/items/166f976cccf30bc63e62
・各種の問題に適応した手法を記載したマップ
 http://scikit-learn.org/stable/tutorial/machine_learning_map/index.html
・機械学習のpythonとの出会い
 http://www.kamishima.net/mlmpyja/
・PyconJP2014でのチュートリアル
 https://www.slideshare.net/payashim/pyconjp-2014-opencv
・Deep learning JP
 http://deeplearning.jp/documents/
・Keras
 https://keras.io/ja/
   https://keras.io/#getting-started-30-seconds-to-keras (English version)
・KerasでVGG16を使う
 http://aidiary.hatenablog.com/entry/20170104/1483535144
・線形回帰とは
   http://pythondatascience.plavox.info/scikit-learn/%E7%B7%9A%E5%BD%A2%E5%9B%9E%E5%B8%B0 
・User guide: (sklearn)
   http://scikit-learn.org/stable/user_guide.html 
・python (function)
   https://docs.python.jp/3/library/functions.html
・TensorFlow
   https://www.tensorflow.org/get_started/mnist/beginners
・Convolution and Pooling
   https://www.slideshare.net/beam2d/deep-learning-52872945
-----------------------------------------------------------------------
◆ PCの構成(約18万円、2016年7月時点)[1]
名称 構成 カスタマイズ
マザーボード インテルH170チップセット ATX(映像出力端子付き)  
メモリ 32 GB(DR4 SDRAM 16GBx2) 8 GBから32 GBへ変更
電源 700 W 500 Wから700 Wへ変更
CPU インテル Core-i7 6700  
SSD 250 GB  
HDD 1TB (SATA3)  
光学ドライブ DVDスーパーマルチドライブ  
GPU NVIDIA GeForce GTX1070 8 GB  
LAN ギガビットLANポート(オンボード)  
OS Windows 10 HOME 64 bit 新しいHDDに変えて、Ubuntu Desktopをインストール
◇ 変更理由[1,2]
・ディープラーニングでは、モデルの学習や結果を推測するために、膨大な量の行列計算を行います。GPUを使用すると、CPUと比べて学習時は10〜30倍、推測時は5〜10倍程度の速度を得ることができます(実際のディープラーニングの学習では、モデルが数十パターン、一つのモデルの学習にGPUを使用しても10時間以上かかるような場合もあるため、ディープラーニングの実行にはGPUの利用が必須といえるでしょう)。
 NVIDIA社製のGPUには、単精度の計算を得意とするGeForce、単精度と倍精度の両方が得意なTeslaなどがあります。一般的に、ディープラーニングの演算精度は単精度で十分だといわれています。GeForce GTX 750 Tiはメモリ容量が2GBと少なめですが、外部電源が不要で、マザーボードにセットするだけでよいので、手軽にGPUの効果を試すことができます。
 CPUは、高度で複雑な演算には適しているものの、単純で膨大な計算処理には適さないと言われています。一方、GPUは複雑な処理は苦手ですが、一度に大量の単純計算を行う場合に圧倒的な速度を得ることができます。
 最近のCPUの70%の価格で、350倍以上のコアを搭載し、1秒あたり15倍以上の浮動小数点演算が可能なGPUを入手できる。
・ディープラーニング実行時、読み込んだデータを一旦実数化しますが、このときメモリ使用量が急増するのに対処するため、パソコンのメモリを多めにしている。パソコンのメモリやハードディスクの容量は、ディープラーニングで使用するモデルやデータ量に応じて増設する必要があります。
・電源は500 Wでも十分であるが、700 Wに増設している。
◇ ディープラーニングは半精度小数点演算で良い [3,4]
 ディープラーニングの高速化においては、計算量に加えて、メモリ容量やバス帯域などがボトルネックになりえます。メモリ容量の点で言うと、大量の重みパラメータや中間データをメモリに収めることを考慮する必要があります。また、バス帯域の点では、GPU(もしくはCPU)のバスを流れるデータが増加してある制限を超えると、そこがボトルネックになります。このようなケースを想定すると、ネットワークを流れるデータのビット数は、できるだけ小さくすることが望まれます。コンピュータでは実数を表現するために、主に64ビットや32ビットの浮動小数点が使われます。数を表現するために多くのビットを使うことで、数値計算時の誤差による影響は少なくなりますが、その分、計算の処理コストやメモリ使用量が増大し、バス帯域に負荷をかけます。数値精度(何ビットのデータで数値を表現するかということ)に関して、ディープラーニングで分かっていることは、ディープラーニングでは数値精度のビット数をそこまで必要としない、ということです。これは、ニューラルネットワークの重要な性質の一つです。この性質は、ニューラルネットワークのロバスト性によるものです。ここで言うロバスト性とは、たとえば、ニューラルネットワークは、入力画像に小さなノイズがのってしまっても、出力結果が変わらないような頑健な性質があるということです。そのようなロバスト性のおかげで、ネットワークを流れるデータを劣化させても、出力結果に与える影響は少ないと考えることができます。
 コンピュータ上で小数を表現するには、32ビットの単精度浮動小数点数や64ビットの倍精度浮動小数点などのフォーマットがありますが、これまでの実験によって、ディープラーニングにおいては、16ビットの半精度浮動小数点(half float)でも、問題なく学習ができることが分かっています[4]。実際、NVIDIAの次世代GPUであるPascalアーキテクチャでは、半精度浮動小数点の演算もサポートされるため、これからは半精度浮動小数点が標準的に用いられると考えられます。
 NVIDIAのMaxwell世代のGPUは、半精度浮動小数点はストレージ(データを保持する機能)としてはサポートしていましたが、演算自体は16ビットでは行っていませんでした。次世代のPascalアーキテクチャは、演算も含めて16ビットで行うため、単に半精度浮動小数点で計算を行うだけで、前世代のGPUと比較しておよそ2倍の高速化が期待できます。
[1] 株式会社フォワードネットワークら「実装ディープラーニング」オーム社
[2] Sebastian Raschkaら「達人データサイエンティストによる理論と実践 Python機械学習プログラミング」インプレス
[3] 斎藤康毅「ゼロから作るDeep Learning」オライリー・ジャパン
[4] S. Gupta et al., Deep learning with limited numerical precision. CoRR, abs/1502.02551 392(2015).
-----------------------------------------------------------------------
◆ インストールの理由

1) Ununtu Desktop
 多くのディープラーニング用フレームワークがUbuntuに対応している。
2) CUDA Toolkit
 NVIDIA社が開発しているGPUを利用した演算を可能にするツール。CUDAを使用し、プログラム内の演算をGPU上で行うことで、計算処理を高速化できます。
3) cuDNN
 ディープラーニング用のライブラリです。CUDA同様、NVIDIA社が開発を行っています。このライブラリを利用することでGPU演算の速度をさらに向上させることができます。
4) Anaconda
 Pythonベースのフレームワークを使う場合に有用なツールです。Pythonベースのフレームワークを複数利用する場合、バージョンが競合することがあります。これを解消するのがAnacondaだと言われています。パッケージのインストールもスムーズに進めることができます。

[1] 株式会社フォワードネットワークら「実装ディープラーニング」オーム社
-----------------------------------------------------------------------
◆ Install (python, sklearn, jupyter notebook, keras and TensorFlow) on Linux
※ Deep learningだけの場合は下記で良いですが、vasp+boltztrapをしようとするとaseなどのモジュールやprintの書式が異なるので動作しなくなります。pyenvを使用、または/usr/bin/python2.7 xxxx.pyしてください。

◇ pyenv (下記はまだチェックしていません)
1. sudo apt-get install git
2. git clone https://github.com/yyuu/pyenv.git ~/.pyenv
3. gedit .bashrc
    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init -)"
4. source .bashrc
5. pyenv install -l | grep ana
6. pyenv install anaconda3-X.X.X
7. pyenv rehash
8. pyenv global anaconda3-X.X.X
9. source .bashrc
10. gedit .bashrc
  alias activate="source $PYENV_ROOT/versions/anaconda3-X.X.X/bin/activate"
11. source .bashrc
12. conda create -n py2 python=2.7
13. mkdir py2
14. cd py2
15. pyenv local anaconda3-X.X.X/envs/py2
16. python

---------- 機械学習だけの方やpython 3.5のみを使用される方は下記----------
◇ Install Anaconda (Python 3.5 version)
(Anaconda include NumPy, SciPy, matplotlib, scikit-lean, pandas and h5py)
1. https://www.continuum.io/
2. DOWALOAD ANACONDA
3. 64-BIT(X86)INSTALL
4. chmod +x Anaconda*.sh
5. python
6. enter
7. yes
8. yes

◇ Install sklearn
1. python
2. import skleran
3. sklearn.__version__

◇ Jupyther
1. jupyter notebook
2. New > Python3
3. Wiew > Toggle Line Numbers

◇ Keras
1. pip install keras

◇ TensorFlow
・CPU version
1. pip install tensorflow
・GPU version
1. pip install tensorflow-gpu

◇ check install and "backend": "tensorflow"
1. python
2. import keras
  Using TensorFlow backend.
・ Other method
1. gedit ~/.keras/keras.json
------
{
    "floatx": "float32",
    "epsilon": 1e-07,
    "backend": "tensorflow",
    "image_data_format": "channels_last"
}
-----

◇ Other Editer
・IPython
・Jupyter QtConsole
・Spyder

[1] https://robotics.naist.jp/edu/text/?Robotics%2FKeras
[2] http://amacbee.hatenablog.com/entry/2015/12/02/220414
[3] http://www.procrasist.com/entry/2017/01/07/154441
[4] http://qiita.com/samacoba/items/207f2650ee60fe1de25a (Windows)
[5] http://blog.amedama.jp/entry/2017/03/13/123742 (cuda)
[6] https://hogehuga.com/post-1452/ (conda command in Anaconda, Mac)
----------------------------------------------------------------------
◆ Jupyther (sklearn)

◇ 基本的な設定
----------
import numpy as np # 数値計算ライブラリ
from sklearn.datasets import load_digits # skleanにある読み込みデータの指定
from sklearn.model_selection import train_test_split as spl # 訓練データとテストデータに分割の指定
from sklearn.metrics import confusion_matrix as cfm # 混同行列

from sklearn.svm import LinearSVC as classifier # 分類器(LinearSVM)の指定
clf = classifier(C=1.0) # 分類器(LinearSVM)の指定とパラメータの指定

digits = load_digits() # データの読み込み
x_train, x_test, y_train, y_test = spl(digits.data, digits.target, test_size=0.2, random_state=0) # 訓練データとテストデータに分割
clf.fit(x_train, y_train) # 訓練データで学習
clf.score(x_test, y_test) # テストデータの評価

y_pred = clf.predict(x_test) # 予測
cfm(y_test, y_pred) # 混同行列で評価
----------

◇ 分類器を変えるときに書き換える部分
----------
from sklearn.svm import LinearSVC as classifier # 分類器(LinearSVM)の指定
clf = classifier(C=1.0) # 分類器(LinearSVM)の指定とパラメータの指定
---------
from sklearn.svm import SVC as classifier # 分類器(LinearSVM)の指定
clf = classifier() # 分類器の指定とパラメータの指定(ディフォルトの設定を使用)
---------
from sklearn.neighbors import KNeighborsClassifier as classifier
clf = classifier() # 分類器の指定とパラメータの指定(ディフォルトの設定を使用)
---------
from sklearn.ensemble import BaggingClassifier as classifier
clf = classifier(n_estimators=10) # 分類器(RandomForestClassifier)の指定とパラメータの指定
---------
from sklearn.ensemble import RandomForestClassifier as classifier
clf = classifier() # 分類器の指定とパラメータの指定(ディフォルトの設定を使用)
---------
from sklearn.ensemble import AdaBoostClassifier as classifier
clf = classifier(n_estimators=100) # 分類器(AdaBoostClassifier)の指定とパラメータの指定
----------

◇ 評価の部分
----------
from sklearn.metrics import accuracy_score as acs
acs(y_test, y_pred)
----------

[1] http://qh73xebitbucketorg.readthedocs.io/ja/latest/1.Programmings/python/LIB/scikit-learn/main/
[2] http://scikit-learn.org/stable/user_guide.html
----------------------------------------------------------------------
◆ Jupyther (sklean, gridsearch)

◇ 基本的な設定
----------
import numpy as np # 数値計算ライブラリ
from sklearn.datasets import load_digits # skleanにある読み込みデータの指定
from sklearn.model_selection import train_test_split as spl # 訓練データとテストデータに分割の指定

from sklearn.svm import SVC as classifier # 分類器(SVM)の指定
clf = classifier() # 分類器(SVM)の指定

digits = load_digits() # データの読み込み
x_train, x_test, y_train, y_test = spl(digits.data, digits.target, test_size=0.2, random_state=0) # 訓練データとテストデータに分割

from sklearn.grid_search import GridSearchCV
par = [
    {'kernel':['linear'],  'C':[1,10,100,1000]},
    {'kernel':['rbf'],     'C':[1,10,100,1000], 'gamma':[0.001, 0.0001]},
    {'kernel':['sigmoid'], 'C':[1,10,100,1000], 'gamma':[0.001, 0.0001]},
    {'kernel':['poly'],    'C':[1,10,100,1000], 'gamma':[0.001, 0.0001], 'degree':[2,3,4]}
    ] # パラメータの指定
    
#cv = GridSearchCV(clf, par, cv=5, scoring="accuracy", n_jobs=-1) # 1 line case
cv = GridSearchCV(
    clf, # 分類器
    par, # 最適化したいパラメータのセット
    cv=5, # 交差検定の回数
    scoring="accuracy", # モデルの評価関数の指定
    n_jobs=-1) #並列数 (CPU), -1 auto
cv.fit(x_train, y_train)
----------

◇ 評価の部分
----------
cv.grid_scores_ # 評価
----------
cv.best_params_ # 評価
----------

[1] http://qiita.com/SE96UoC5AfUt7uY/items/c81f7cea72a44a7bfd3a (Grid Search)
----------------------------------------------------------------------
◆ Jupyther (Keras)

◇ 基本的な設定
----------
import numpy as np # 数値計算ライブラリ
from sklearn import datasets, preprocessing

import keras
from keras.datasets import mnist # kerasにあるデータの指定(MINSTの指定)
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout
from keras.optimizers import Adam # 最適化の設定 (Adam method)
from keras.utils.np_utils import to_categorical

#-----------load mnist-----------
num_classes = 10

(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train = x_train.reshape(60000, 784).astype('float32')
x_test = x_test.reshape(10000, 784).astype('float32')
x_train /= 255 # normalization for keras
x_test /= 255 # normalization for keras

y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
#-----------load mnist-----------

# 層の指定
model = Sequential()
model.add(Dense(input_dim=784, units=64)) # 1st(input layer) and 2nd layer
model.add(Activation("relu")) # use ReLU function
model.add(Dropout(0.5)) # use dropout method
model.add(Dense(units=10)) # 3rd layer (output layer)
model.add(Activation("softmax")) # output normalization

# 最適化の設定 (Adam法)
model.compile(loss='categorical_crossentropy', optimizer=Adam(lr=0.01), metrics=['accuracy'])
# モデルの最適化 (ミニバッチ法)
hist = model.fit(x_train, y_train,
    epochs=10, # Number of iteration
    batch_size=100, # batch size
    verbose=1) # visualization

# モデルの評価
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=100)

# 予測
classes = model.predict_classes(x_test, batch_size=100)
proba = model.predict_proba(x_test, batch_size=100)
----------

◇ 学習率を変更する手法の発展
  SGD --> AdaGrad --> RMSprop --> Adam
以上の順に発展しているので、最新の手法であるAdamを使えば良いと思います。

◇ 評価の部分
----------
# 評価
score = model.evaluate(x_test, y_test, verbose=0)
print('test loss:', score[0])
print('test acc:', score[1])

# plot results
%matplotlib inline
import matplotlib.pyplot as plt

loss = hist.history['loss']

epochs = len(loss) # get number of data

plt.plot(range(epochs), loss, marker='.', label='loss')
plt.legend(loc='best')
plt.grid()
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.show()
----------

Theano: number of channel x width x height
TensorFlow: width x height x number of channel

[1] https://robotics.naist.jp/edu/text/?Robotics%2FKeras
[2] http://amacbee.hatenablog.com/entry/2015/12/02/220414
[3] http://www.procrasist.com/entry/2017/01/07/154441
[4] http://qiita.com/samacoba/items/207f2650ee60fe1de25a (Windows)
[5] http://blog.amedama.jp/entry/2017/03/13/123742 (cuda)
[6] https://hogehuga.com/post-1452/ (conda command in Anaconda, Mac)
[7] http://aidiary.hatenablog.com/entry/20160328/1459174455
[8] http://aidiary.hatenablog.com/entry/20161120/1479640534
----------------------------------------------------------------------
◆ Jupyther (Keras, Convolution and Pooling)

◇ 基本的な設定 (under constructing)
----------
from keras.layers import Conv2D, MaxPooling2D, Flatten

model.add(conv2D(32,3,3,border_mode='same'),
         input_shape=(28,28,1))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size(3,3)),
         border_mode='same')
----------
・conv2Dは畳込みで、上記の例では3x3の行列の種類を変えて畳込んだものを32枚作る。
・MaxPooling2D は、指定した行列から最大値を抜き出す。上記の例では3x3行列の中から最大値を抜き出す。

◇ 基本的な設定 (under constructing)
----------
def conv_feat_2_image(feats):
    data=np.ndarray((len(feats),28,28,1),
                   dtype=np.float32)
    for i, f in enumerate(feats):
        data[i]=f.reshape(28,28,1)
        return data
----------

◇ 基本的な設定 (under constructing)
----------
train_image = conv_feat_2_image(train_features)
----------

[1] https://www.slideshare.net/yasutomo57jp/python-deep-learning
[2] https://keras.io/ja/applications/
[3] http://aidiary.hatenablog.com/entry/20170104/1483535144
[4] http://aidiary.hatenablog.com/entry/20170110/1484057655
----------------------------------------------------------------------
◆ Jupyther (Keras, Fine-tuning{Xception, VGG16, VGG19, ResNet50 and inceptionV3})

◇ 基本的な設定 (under constructing)
----------
from keras.preprocessing import image
from keras.applications.vgg16 import VGG16
from keras.applications.vgg16 import preprocess_input
from keras.models import Model
import numpy as np

img_path = '/home/wien2k2/Pictures/elephant.jpg'
img = image.load_img(img_path, target_size=(224, 224)) # resize to 224x224
x = image.img_to_array(img) # change array data
x = np.expand_dims(x, axis=0) # change (rows, cols, channels) to (samples, rows, cols, channels)
x = preprocess_input(x)

basemodel = VGG16(weights='imagenet',include_top=False)
for layer in basemodel.layers:
        layer.trainable=False
xb=basemodel.output
xb=Dense(2,activation='softmax')(xb) # 2 node
model=Model(inputs=basemodel.input,outputs=xb) #Create your own model
----------

[1] https://keras.io/ja/applications/
[2] http://aidiary.hatenablog.com/entry/20170104/1483535144
[3] http://aidiary.hatenablog.com/entry/20170110/1484057655
-----------------------------------------------------------------------
◆ データの読み込み
 PythonでCSV(要素をカンマで区切ったテキスト形式)データを扱うには、以下の4通りのアプローチがあります。
@ただのテキストファイルとして扱い、自力で読み取る
APython csvモジュールを使う
BNumPy モジュールを使う
Cpandas モジュールを使う
   大まかに見て、@からCに進むにつれて高機能な仕組みになりますが、その分使い方を覚えるのも難しくなります。センサのような数値データを扱っていく場合、データ分析用ライブラリであるpandasを取得しておくのは非常に有利です。
 pandasの主要なデータ構造は、SeriesとDataFrameです。Seriesは1次元配列を高機能化したような構造で、一方、DataFrameは2次元配列もしくはスプレッドシートに似た構造になっています。

◇ 基本的な設定
----------
import pandas as pd
dt = pd.read_csv(
    '/home/wien2k2/Desktop/juyo-j.csv',
    skiprows=1,
    names=['date', 'time', 'comsumption'])
----------
%matplotlib inline
import matplotlib.pyplot as plt
plt.scatter(dt['comsumption'],dt['comsumption'],s=0.1)

plt.title("scatter plot")
plt.xlabel("x")
plt.ylabel("y")
plt.show()
----------

References
[1] 株式会社システム計画研究所「Pythonによる機械学習入門」オーム社
[2] http://www.task-notes.com/entry/20151129/1448794509  (Linux)
[3] http://pythondatascience.plavox.info/python%E3%81%AE%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83/jupyter-notebook%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86  (Win and Mac)
[4] https://adtech.cyberagent.io/techblog/archives/2317  (tips)
-----------------------------------------------------------------------
◆ Jupyther (Graph)

Memo: for copy&paste

◇ Gaussian scatter
----------
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.random.randn(1000)
y = np.random.randn(1000)

plt.scatter(x,y)

plt.title("gaussian scatter plot")
plt.xlabel("x")
plt.ylabel("y")
plt.show()
----------

◇  sin and scatter
----------
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-3,3,0.1)
y_sin = np.sin(x)
x_rand = np.random.rand(100)*6-3
y_rand = np.random.rand(100)*6-3

plt.figure()

plt.subplot(1,1,1)

plt.plot(x, y_sin, marker='o', markersize=5, label='line')
plt.scatter(x_rand,y_rand,label='scatter')
plt.legend()
plt.grid(True)
plt.xlabel("x")
plt.ylabel("y")
plt.show()
----------

[1] http://takemikami.com/2017/02/21/scikitlearnSVMiris.html
[2] http://pythondatascience.plavox.info/scikit-learn/scikit-learn%E3%81%AB%E4%BB%98%E5%B1%9E%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88
[3] http://www.turbare.net/transl/scipy-lecture-notes/packages/scikit-learn/index.html
[4] http://sucrose.hatenablog.com/entry/2013/05/25/133021
[5] https://www.slideshare.net/tkm2261/scikit-learn
[6] http://dev.classmethod.jp/machine-learning/introduction-scikit-learn/
[7] https://www.youtube.com/watch?v=yp6LIjcZgoQ
[8] https://www.youtube.com/watch?v=7GoaCheaERU
[9] https://www.youtube.com/watch?v=oA6QfWUJj-8
-----------------------------------------------------------------------
QRコード
携帯用QRコード
アクセス数
ページビュー数