以下の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))
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)
機械学習の勉強に役立てていただけたら幸いです。
参考文献
より体系的に学びたい方には下記本がオススメです。
私は最初、この本で機械学習の基礎を学びました。
リンク