導入
機械学習入門
特徴量エンジニアリング
特徴量エンジニアリング(テキストデータ)
タスクとマイニングアルゴリズムの例
import numpy as np # 行列の作成 a = np.array([[1,2,3], [4,5,6]]) print(a) print(type(a)) print(a.shape)
[[1 2 3] [4 5 6]] <class 'numpy.ndarray'> (2, 3)
#行の参照 a[0]
array([1, 2, 3])
#列の参照 a[:,0]
array([1, 4])
#スライス指定も可能 a[0:2]
array([[1, 2, 3], [4, 5, 6]])
a[:,0:2]
array([[1, 2], [4, 5]])
# 「行列 + 1」は全要素に対する和を実行 a + 1
array([[2, 3, 4], [5, 6, 7]])
# *演算子も同様。 a * 2
array([[ 2, 4, 6], [ 8, 10, 12]])
#行列演算ではない! a * a
array([[ 1, 4, 9], [16, 25, 36]])
#転置行列 a.T
array([[1, 4], [2, 5], [3, 6]])
#内積を求めるにはdot関数を使う np.dot(a, a.T)
array([[14, 32], [32, 77]])
#逆行列 np.linalg.inv(np.dot(a, a.T))
array([[ 1.42592593, -0.59259259], [-0.59259259, 0.25925926]])
#ゼロ行列、1行列、対角行列 print(np.zeros((2,3))) print(np.ones((2,3))) print(np.eye(3))
[[0. 0. 0.] [0. 0. 0.]] [[1. 1. 1.] [1. 1. 1.]] [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]]
#特定範囲内で幅を指定してサンプル点を用意。 #例えば、 # 「y=x**2」のグラフを描画したいとき、 # 定義域「-10〜10の範囲で0.1刻みでサンプル点を用意」みたいなときに便利。 np.arange(0, 1, 0.3)
array([0. , 0.3, 0.6, 0.9])
#np.arangeで始点、刻み幅を省略すると0から指定個数の整数を用意。 np.arange(8)
array([0, 1, 2, 3, 4, 5, 6, 7])
#行列の形を変形できる。 np.reshape(np.arange(6),(2,3))
array([[0, 1, 2], [3, 4, 5]])
#刻み幅はどうでも良いからサンプル数を指定したい場合に便利。 np.linspace(0,2,3)
array([0., 1., 2.])
np.linspace(0,2,4)
array([0. , 0.66666667, 1.33333333, 2. ])
#行列を結合できる。 #縦方向に結合 a = np.array([[1,2,3], [4,5,6]]) b = np.array([[7,8,9], [10,11,12]]) np.r_[a, b]
array([[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9], [10, 11, 12]])
#横方向に結合 np.c_[a, b]
array([[ 1, 2, 3, 7, 8, 9], [ 4, 5, 6, 10, 11, 12]])