2. 파이톤이 접미사된 다변수 해석 6-3.회귀 능선·라소 회귀(scikit-learn)[정규화 효과]
(1) 라이브러리 가져오기
# データ加工・計算・分析ライブラリ
import numpy as np
import pandas as pd
# グラフ描画ライブラリ
import matplotlib.pyplot as plt
%matplotlib inline
# 機械学習ライブラリ
import sklearn
from sklearn.linear_model import Ridge, Lasso # 回帰モデル生成のためのクラス
# matplotlibを日本語表示に対応させるモジュール
!pip install japanize-matplotlib
import japanize_matplotlib
(2) 데이터 획득 및 읽기
# データを取得
url = 'https://raw.githubusercontent.com/yumi-ito/sample_data/master/ridge_lasso_50variables.csv'
# 取得したデータをDataFrameオブジェクトとして読み込み
df = pd.read_csv(url)
print(df)
# 「y」列を削除して説明変数xを作成
x = df.drop('y', axis=1)
# 「y」列を抽出して目的変数yを作成
y = df['y']
(3) 정규화 매개 변수λ낳다
# λ(alpha)を50通り生成
num_alphas = 50
alphas = np.logspace(-2, 0.7, num_alphas)
print(alphas)
numpy.logspace()
는 비뚤어진 함수로 밑부분이 10인 대수, 즉 등차수열을 취한다.(開始値, 終了値, 生成する数)
된 실제 대수는 다음과 같다.np.log10(alphas)
numpy.arange()
도 가능하지만 앞으로 가시화할 때 대수각도를 사용해야 하기 때문에 이렇게 합니다.대수 눈금
4. 척추 회귀 추정
# 回帰係数を格納する変数
ridge_coefs = []
# alphaを入れ替えながらリッジ回帰の推定をくりかえす
for a in alphas:
ridge = Ridge(alpha = a, fit_intercept = False)
ridge.fit(x, y)
ridge_coefs.append(ridge.coef_)
alpha
하면서 회귀척추의 추측을 반복해 회귀계수를 ridge_coefs
에 추가했다.Ridge()
의 매개 변수fit_intercept = False
는 슬라이드를 계산할지 여부를 지정하고False
는 슬라이드를 계산하지 않는다. 즉, 슬라이드 0은 원점을 통과해야 한다.# 集積された回帰係数をnumpyのarrayに変換
ridge_coefs = np.array(ridge_coefs)
print("配列の形状:", ridge_coefs.shape)
print(ridge_coefs)
alphas
대수를 변환한 후 음수를 더한 log_alphas
를 사용한다.plt.text()
함수를 표시하기 위해 인자(x, y, "str")
로 좌표와 문자열을 지정합니다.# alphasを対数変換(-log10)
log_alphas = -np.log10(alphas)
# グラフ領域のサイズ指定
plt.figure(figsize = (8,6))
# x軸にλ、y軸に係数を置いた折れ線グラフ
plt.plot(log_alphas, ridge_coefs)
# 説明変数x_1を表示
plt.text(max(log_alphas) + 0.1, np.array(ridge_coefs)[0,0], "x_1", fontsize=13)
# x軸の範囲を指定
plt.xlim([min(log_alphas) - 0.1, max(log_alphas) + 0.3])
# 軸ラベル
plt.xlabel("正則化パラメータλ(-log10)", fontsize=13)
plt.ylabel("回帰係数", fontsize=13)
# 目盛線
plt.grid()
라소 컴백 예상
# 回帰係数を格納する変数
lasso_coefs = []
# alphaを入れ替えながらラッソ回帰の推定をくりかえす
for a in alphas:
lasso = Lasso(alpha = a, fit_intercept = False)
lasso.fit(x, y)
lasso_coefs.append(lasso.coef_)
# 集積された回帰係数をnumpyのarrayに変換
lasso_coefs = np.array(lasso_coefs)
print("配列の形状:", lasso_coefs.shape)
print(lasso_coefs)
# グラフ領域のサイズ指定
plt.figure(figsize = (8,6))
# x軸にλ、y軸に係数を置いた折れ線グラフ
plt.plot(log_alphas, lasso_coefs)
# 説明変数x_1を表示
plt.text(max(log_alphas) + 0.1, np.array(lasso_coefs)[0,0], "x_1", fontsize=13)
# x軸の範囲を指定
plt.xlim([min(log_alphas) - 0.1, max(log_alphas) + 0.3])
# 軸ラベル
plt.xlabel("正則化パラメータλ(-log10)", fontsize=13)
plt.ylabel("回帰係数", fontsize=13)
# 目盛線
plt.grid()
총결산
Reference
이 문제에 관하여(2. 파이톤이 접미사된 다변수 해석 6-3.회귀 능선·라소 회귀(scikit-learn)[정규화 효과]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/y_itoh/items/36d4b90c58f28802de16텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)