「【キカガク流】人工知能・機械学習 脱ブラックボックス講座 – 初級編 – & – 中級編 -」
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[‘任意の変数’])