「【キカガク流】人工知能・機械学習 脱ブラックボックス講座 – 初級編 – & – 中級編 -」

Udemyで「【キカガク流】人工知能・機械学習 脱ブラックボックス講座」の初級編中級編を受講しました。Pythonを初めて学びましたが、非常に分かりやすい説明で理解することができました。せっかく学んだ内容を忘れないように、Pythonでの記述の仕方を記しておきます。使用しているフォントの関係でシングルクォーテーションが全角になってしまいますが、半角です。

基礎
 べき乗 **
 等号 ==
  不等号 !=
  改行 \n
  コメントアウト ctl/
  リスト [1,2,3,4]
  タプル (1,2,3,4)
  辞書 [‘a’:1, ‘b’:2, ‘c’:3, ‘d’:4]
 if文
  if ~: 
  elif ~: 
  else ~:
 返り値がある場合 return
  グラフの描画
   import matplotlib.pyplot as plt
   plt.scatter(x, y)
   plt.show
  統計量の算出
   df.describe()

単回帰分析
 データの読み込み
  import pandas as pd
  df = pd.read_csv(‘ファイル名’) # 拡張子を忘れないこと
 予測値を計算する関数の作成
  def predict(x):
   # 定数
   mean = df.mean()
   xm = mean[‘x’]
   ym = mean[‘y’]
   # パラメータの計算
   xx = x * x
   xy = x * y
   a = xy.sum() / xx.sum() # 評価関数(損失関数)を微分して0になるパラメータ
   # 中心化
   xc = x – xm
   y_hat = a * xc + ym
   # 出力
   return y_hat
  predict(任意の値)

行列演算の基礎
 import numpy as np
 ベクトルの定義
  x = np.array([[1],[2],[3]]) # []を二重にしないと転置しない
 行列の定義
  X = np.array([[1,2],[3,4]])
 転置
  Xt = (X.T)
 逆行列
  X_inv = np.linalg.inv(X)
 行列積
  XX_inv = np.dot(X, X_inv)
 行数・列数の確認
  X.shape

Scikit-learnで実装
 import sklearn
 from sklearn.linear_model import LinearRegression # 重回帰分析のみ読み込み
 model = LinearRegression() # モデルの宣言
 model.fit(X, y) # モデルの学習←パラメータの調整
 model.coef_ # 調整後のパラメータ
 model.intercept_ # 切片
 model.score(X, y) #予測精度←決定係数
 予測値の計算
  x = X.iloc[0, :] # 1行目を代入
  y_pred = model.predict([x])[0]
  y_pred

外れ値除去+重回帰分析 +スケーリング
 %matplotlib inline
 import numpy as np
 import pandas as pd
 df = pd.read_csv(‘ファイル名’)
 import seaborn as sns
 sns.distplot(df[‘任意の変数’]) # 分布の確認
 cols = df.columns
 外れ値除去
  _df = df
  for col in cols:
   low = mean[col] – 3 * sigma[col]
   high = mean[col] + 3 * sigma[col]
   _df = _df[(_df[col] > low) & (_df[col] < high)]
 入力変数と出力変数に分割
  X = _df.iloc[:, :-1]
  y = _df.iloc[:, -1]
 訓練データと検証データに分割
  import sklearn
  from sklearn.model_selection import train_test_split
  X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=1)
 重回帰分析
  from sklearn.linear_model import LinearRegression
  model = LinearRegression() 
  model.fit(X_train, y_train)
  model.score(X_train, y_train)
  model.score(X_test, y_test)
 スケーリング
  from sklearn.preprocessing import StandardScaler
  scaler = StandardScaler()
  scaler.fit(X_train)
  X_train2 = scaler.transform(X_train)
  X_test2 = scaler.transform(X_test)
  model = LinearRegression()
  model.fit(X_train2, y_train)
  model.score(X_train2, y_train)
  model.score(X_test2, y_test)
  np.set_printoptions(precision=2, suppress=True)
  model.coef_
  sns.distplot(_df[‘任意の変数’])