機械学習入門 #1 【Python 重回帰分析 ソースコード公開】 2020年

Python

以下の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)

機械学習の勉強に役立てていただけたら幸いです。

参考文献

より体系的に学びたい方には下記本がオススメです。

私は最初、この本で機械学習の基礎を学びました。

タイトルとURLをコピーしました