Pythonのみを使ってゼロから実装する

本書は、ライブラリを使うだけでは満足できずその中身を理解したいという人に向けて書かれました。アルゴリズムの動作原理を示した上で、実装例で実験できるようにしています。まずは機械学習の分野でデファクトで使われているプログラミング言語であるPythonの説明をします。筆者の周りでは、機械学習の中身を理解しようとするときの一番のボトルネックが数学の知識であるという話をよく聞くので、数学的な解説も初歩的なところから説明するようにしました。
文字列のスライシング

文字列の長さ(文字数)の取得にはlen関数を使います。部分文字列を取得するには角括弧([と]、ブラケット)を使います。文字列sについて、s[i]はインデックスiにあたる文字を取り出します。s[i:j]はインデックスiからインデックスj-1までの部分文字列を取り出すことを意味します。インデックスは0から始まるので、例えばs[2]は3文字目を意味し、s[1:5]は2文字目から4文字目を意味します。
ベクトルの幾何的イメージ

ベクトルが2次元または3次元のときは、幾何的に可視化することができます。特に2次元の場合について考えると、ベクトルa=(a1,a2)tは始点が原点(0,0)にあり終点が点(a1,a2)にある矢印と同一視できます。同様に3次元の場合ベクトルb=(b1,b2,b3)tは元が(0,0,0)原点にあり先が点(b1,b2,b3)にある矢印と同一視できます。このことから「数字を並べたもの」であったベクトルに幾何的なイメージを持つことができます。
媒介変数表示

t がすべての実数値を取って変わるとき、このようなxに対応する点は与えられた直線l 上すべての点を通ることがわかります。このように直線上の点の位置ベクトルをパラメータt を使って表現したものを、直線のパラメータ表示(媒介変数表示)と呼びます。そしてaをこの直線の方向ベクトルと呼びます。
配列の基本計算

まずは配列の集計計算を見てみます。ここでは合計(sum)、平均(mean)、最大値(max)、最小値(min)を計算しています。sumの名前付き引数axisを指定すると行ごと、列ごとの合計をとることができます。b.sum(axis=0)とすると、行方向に和を計算し、つまり列ごとに合計を出します。このときの戻り値は合計のスカラーではなく配列であることに注意してください。
交差検証

過学習を防ぐ方法として交差検証(クロスバリデーション)というのがあります。k分割交差検証とはデータをk個に分割(端数以外はほぼ等分)して、そのk個のデータのうち1つをテスト用にして他を訓練用にします。例えば3分割交差検証ではデータを3つに分割しますが、それらをデータ1、データ2、データ3と呼ぶことにします。