<commit_before>Kerasによる2クラスロジスティック回帰
2016/10/19

まずはもっとも簡単な2クラスロジスティック回帰モデルをKerasで書いてみる。ロジスティック回帰は、回帰とつくけど分類のアルゴリズムで、隠れ層のないニューラルネットとしてモデル化できる。

データは、PRMLの4章の[ex2data1](https://raw.githubusercontent.com/sylvan5/PRML/master/ch4/ex2data1.txt) を使う。1列目と2列目がデータで3列目がクラスラベル（0または1の2クラス）。

Kerasによる実験は

1. データをロードする
2. ニューラルネットモデル構造を定義
3. モデルをコンパイル
4. モデルの訓練
5. モデルを用いて予測

という手順を踏みます今回は、予測はしないので1～4の流れを一通り試します


logreg_ex2data1.py

# データのロードと正規化

データを読み込むライブラリにはpandasなどもあるが、ここではnumpy.genfromtxt()を使う。Xがデータで二次元データのリスト、tがラベルで0または1のリスト。

```python
# load training data
data = np.genfromtxt(os.path.join('data', 'ex2data1.txt'), delimiter=',')
X = data[:, (0, 1)]
t = data[:, 2]
```

データの各列の平均が0、標準偏差が1になるようにデータを正規化する。この正規化をしないと学習がまったく進まない（=lossが小さくならない）ケースが多かったのでやった方がよさそう。sklearnのpreprocessingモジュールに正規化のメソッドがあるので使う。

```python
from sklearn import preprocessing
# normalize data
X = preprocessing.scale(X)<commit_msg>Read a proof<commit_after>Kerasによる2クラスロジスティック回帰
2016/10/19

まずはもっとも簡単な2クラスロジスティック回帰モデルをKerasで書いてみる。ロジスティック回帰は、回帰とつくけど分類のアルゴリズムで、隠れ層のないニューラルネットとしてモデル化できる。

データは、PRMLの4章の[ex2data1](https://raw.githubusercontent.com/sylvan5/PRML/master/ch4/ex2data1.txt) を使う。1列目と2列目がデータで3列目がクラスラベル（0または1の2クラス）。

logreg_ex2data1.py

# データのロードと正規化

データを読み込むライブラリにはpandasなどもあるが、ここではnumpy.genfromtxt()を使う。Xがデータで二次元データのリスト、tがラベルで0または1のリスト。

```python
# load training data
data = np.genfromtxt(os.path.join('data', 'ex2data1.txt'), delimiter=',')
X = data[:, (0, 1)]
t = data[:, 2]
```

データの各列の平均が0、標準偏差が1になるようにデータを正規化する。この正規化をしないと学習がまったく進まない（=lossが小さくならない）ケースが多かったのでやった方がよさそう。sklearnのpreprocessingモジュールに正規化のメソッドがあるので使う。

```python
from sklearn import preprocessing
# normalize data
X = preprocessing.scale(X)
{'fraction_non_alphanumeric': 0.11308466548253404, 'fraction_numerical': 0.04440497335701599, 'mean_word_length': 9.69620253164557, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1495043', 'n_tokens_mistral': 1214, 'n_tokens_neox': 1152, 'n_words': 79}