#R_Square #MSE #RMSE
#regularization #regularization/L1 #regularization/L2
#lasso
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Lasso
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
# データを生成
X, y = make_regression(n_samples=100, n_features=100, n_informative=60, n_targets=1, random_state=42)
train_X, test_X, train_y, test_y = train_test_split(X, y, random_state=42)
# 以下にコードを記述してください
# 線形回帰
model = LinearRegression()
model.fit(train_X,train_y)
# test_X, test_yに対する決定係数を出力してください
print("Linear regression:{}".format(model.score(test_X, test_y)))
# ラッソ回帰
model = Lasso()
model.fit(train_X,train_y)
# test_X, test_yに対する決定係数を出力してください
print("Lasso regression:{}".format(model.score(test_X, test_y)))
>> 출력결과
>> Linear regression:0.8475616529676024
>> Lasso regression:0.9679210925939417
#ridge
from sklearn.linear_model import Ridge
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
# データを生成
X, y = make_regression(n_samples=100, n_features=50, n_informative=50, n_targets=1, noise=100.0, random_state=42)
train_X, test_X, train_y, test_y = train_test_split(X, y, random_state=42)
# 以下にコードを記述してください
# 線形回帰
model = LinearRegression()
model.fit(train_X,train_y)
# test_X, test_yに対する決定係数を出力してください
print("Linear regression:{}".format(model.score(test_X, test_y)))
# リッジ回帰
model = Ridge()
model.fit(train_X,train_y)
# test_X, test_yに対する決定係数を出力してください
print("Ridge regression:{}".format(model.score(test_X, test_y)))
>> 출력결과
>> Linear regression:0.7802322835148345
>> Ridge regression:0.7807547182116584
#elasticnet
import pandas as pd
from sklearn.model_selection import train_test_split
# 必要なモジュールを追記してください。
from sklearn.linear_model import LinearRegression, Ridge, Lasso, ElasticNet
# データの読み込み
concrete_data = pd.read_excel("https://archive.ics.uci.edu/ml/machine-learning-databases/concrete/compressive/Concrete_Data.xls")
concrete_train_X, concrete_test_X, concrete_train_y, concrete_test_y = train_test_split(
concrete_data.drop('Concrete compressive strength(MPa, megapascals) ', axis=1),
concrete_data['Concrete compressive strength(MPa, megapascals) '], random_state=42)
# 以下にコードを記述してください。
# LinearRegression
model_linear = LinearRegression()
model_linear.fit(concrete_train_X, concrete_train_y)
print("LinearRegressionの決定係数は{}です。".format(model_linear.score(concrete_test_X,concrete_test_y)))
#Ridge
model_ridge = Ridge()
model_ridge.fit(concrete_train_X, concrete_train_y)
print("Ridgeの決定係数は{}です。".format(model_ridge.score(concrete_test_X,concrete_test_y)))
#Lasso
model_lasso = Lasso()
model_lasso.fit(concrete_train_X, concrete_train_y)
print("Lassoの決定係数は{}です。".format(model_lasso.score(concrete_test_X,concrete_test_y)))
#ElasticNet
for i in range(1, 10):
ratio = i * 0.1
model_elasticnet = ElasticNet(l1_ratio=ratio)
model_elasticnet.fit(concrete_train_X, concrete_train_y)
print("ElasticNetのL1割りあいが{:.1f}の時の決定係数は{}です。".format(ratio, model_elasticnet.score(concrete_test_X,concrete_test_y)))