以下のYouTube動画で機械学習の基礎(重回帰分析)を解説しました。
機械学習入門 #1 【Python 重回帰分析】 2020年4月時点
機械学習入門 #2 【Python 重回帰分析 モデル精度算出】 2020年4月時点
以下が使用したソースコードです。
Google Colaboratoryに貼り付ける際は、「#ここでいったん区切る」ごとに新しいセルに貼り付けてください。
import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LinearRegression import seaborn as sns import matplotlib.pyplot as plt
data_train = pd.read_csv("/content/sample_data/california_housing_train.csv")
data_test = pd.read_csv("/content/sample_data/california_housing_test.csv")
X_train = data_train.drop(["median_house_value", "latitude", "longitude"], axis=1)
y_train = data_train["median_house_value"]
X_test = data_test.drop(["median_house_value", "latitude", "longitude"], axis=1)
y_test = data_test["median_house_value"]
scale = StandardScaler()
X_train = scale.fit_transform(X_train)
X_test = scale.fit_transform(X_test)
lin_reg = LinearRegression()
lin_reg.fit(X_train, y_train)
print(lin_reg.coef_) # ここでいったん区切る pred_y = lin_reg.predict(X_test) plt.scatter(y_test, pred_y) plt.xlim([0, 500000]) plt.ylim([0, 500000]) plt.xlabel("Real value") plt.ylabel("Predicted value") plt.plot([0, 500000], [0, 500000], color="black")
# ここでいったん区切る data_train.hist(bins=50, figsize=(20, 20))
# ここでいったん区切る sns.pairplot(data_train.drop(["latitude", "longitude"], axis=1)) # ここでいったん区切る
# 学習データ
# 学習は前回実施済み
# 正解値
y_train_true = data_train["median_house_value"]
# 予測値
y_train_pred = lin_reg.predict(X_train)
# グラフ描画
plt.scatter(y_train_true, y_train_pred)
plt.xlim([0, 500000])
plt.ylim([0, 500000])
plt.xlabel("Real value")
plt.ylabel("Predicted value")
plt.plot([0, 500000], [0, 500000], color="black")
# R2_train
from sklearn.metrics import r2_score
r2_score_train = r2_score(y_train_true, y_train_pred)
print("r2:")
print(r2_score_train)
# MAE_train
from sklearn.metrics import mean_absolute_error
mae_train = mean_absolute_error(y_train_true, y_train_pred)
print("MAE:")
print(mae_train)
# RMSE_train
from sklearn.metrics import mean_squared_error
import numpy as np
rmse_train = np.sqrt(mean_squared_error(y_train_true, y_train_pred))
print("RMSE:")
print(rmse_train)
# ここでいったん区切る
# テストデータ
# 正解値
y_test_true = data_test["median_house_value"]
# 予測値
y_test_pred = lin_reg.predict(X_test)
# グラフ描画 plt.scatter(y_test_true, y_test_pred)
plt.xlim([0, 500000])
plt.ylim([0, 500000])
plt.xlabel("Real value")
plt.ylabel("Predicted value")
plt.plot([0, 500000], [0, 500000], color="black")
# R2_test
r2_score_test = r2_score(y_test_true, y_test_pred)
print("r2:")
print(r2_score_test)
# MAE_test
mae_test = mean_absolute_error(y_test_true, y_test_pred)
print("MAE:")
print(mae_test)
# RMSE_test
rmse_test = np.sqrt(mean_squared_error(y_test_true, y_test_pred))
print("RMSE:")
print(rmse_test)
機械学習の勉強に役立てていただけたら幸いです。
参考文献
より体系的に学びたい方には下記本がオススメです。
私は最初、この本で機械学習の基礎を学びました。
リンク