728x90
반응형

1. 베이스라인 모델_선형회귀

 

from sklearn.model_selection import train_test_split
#
num_train = len(train) # 훈련 데이터 개수

# 훈련 데이터와 테스트 데이터 나누기

X_train= all_data[:num_train] # 0~num_train -1 행
X_test = all_data[num_train:] # num_train ~ 마지막 행

y_train = train['yield'].values

y_test = submission['yield'].values

==> 훈련 데이터와 테스트 데이터 나누기

%%time


from sklearn.linear_model import LinearRegression
from sklearn.model_selection import GridSearchCV

# 선형 회귀 모델 초기화
lr_model = LinearRegression()

# 그리드 서치를 위한 하이퍼파라미터 그리드 준비
param_grid_lr = {
    'fit_intercept': [True, False],        # 절편 사용 여부
    #'normalize': [True, False]             # 특성 정규화 여부
    'n_jobs' : [-1]
}

# 그리드 서치 객체 생성
grid_search_lr = GridSearchCV(lr_model, param_grid_lr, cv=5)

# 그리드 서치 수행
grid_search_lr.fit(X_train, y_train)

# 최적의 모델 및 파라미터 출력
best_model_grid_search_lr = grid_search_lr.best_estimator_
best_params_grid_search_lr = grid_search_lr.best_params_
print("Best Model (Linear Regression):", best_model_grid_search_lr)
print("Best Parameters (Linear Regression):", best_params_grid_search_lr)


==> 그리드 서치를 활용한 최적의 하이퍼파라미터 값 찾기

 

y_preds = best_model_grid_search_lr.predict(X_test)

y_preds
from sklearn.model_selection import train_test_split

num_train = len(train) # 훈련 데이터 개수

# 훈련 데이터와 테스트 데이터 나누기

X= all_data[:num_train] # 0~num_train -1 행
X_test = all_data[num_train:] # num_train ~ 마지막 행

y = train['yield'].values


X_train , X_valid , y_train, y_valid = train_test_split(X,y, test_size = 0.2, random_state=0)

==> 검증값 산정하기 위한 데이터 나누기

 

from sklearn.metrics import mean_absolute_error

# 모델 학습 (예시로 Linear Regression 모델 사용)

# 검증 데이터에 대한 예측 수행
y_pred = best_model_grid_search_lr.predict(X_valid)

# MAE 계산
mae = mean_absolute_error(y_valid, y_pred)
print("MAE:", mae)

MAE: 368.9014144764922

362점

==> 상당히 낮은 등수이다 1700등/1800등

from sklearn.model_selection import train_test_split
#
num_train = len(train) # 훈련 데이터 개수

# 훈련 데이터와 테스트 데이터 나누기

X_train= all_data[:num_train] # 0~num_train -1 행
X_test = all_data[num_train:] # num_train ~ 마지막 행

y_train = train['yield'].values

y_test = submission['yield'].values
%%time

from sklearn import metrics
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import mean_absolute_error

ridge_model = Ridge()

# 하이퍼파라미터 값 목록
ridge_params = {'max_iter': [30, 50,100,200], 'alpha': [0.01,0.05,0.1, 1] ,
                'random_state' : [42],
                'solver' : ['auto']}

# 교차 검증용 평가 함수(MAE 계산)
mae_scorer = metrics.make_scorer(mean_absolute_error, greater_is_better=False)

gridsearch_ridge_model = GridSearchCV(estimator=ridge_model,
                                      param_grid=ridge_params,
                                      scoring=mae_scorer,
                                      cv=5)

# 그리드 서치 수행
gridsearch_ridge_model.fit(X_train, y_train)

best_model_grid_search_ridge = gridsearch_ridge_model.best_estimator_
best_params_grid_search_ridge = gridsearch_ridge_model.best_params_

print("Best Model (Ridge Regression):", best_model_grid_search_ridge)
print("Best Parameters (Ridge Regression):", best_params_grid_search_ridge)

==> 릿지 모델(L1 규제 활용한 모델) 

https://knowallworld.tistory.com/446

 

[LogisticRegression()활용] 하이퍼파라미터 값 알아보기★ROC-AUC★L1,L2규제

1. LogisticRegression() 활용 최적의 하이퍼파라미터 찾고 학습하기 %%time from sklearn.model_selection import GridSearchCV from sklearn.linear_model import LogisticRegression # 로지스틱 회귀 모델 생성 logistic_model = LogisticRegr

knowallworld.tistory.com

Best Model (Ridge Regression): Ridge(alpha=0.01, max_iter=30, random_state=42)
Best Parameters (Ridge Regression): {'alpha': 0.01, 'max_iter': 30, 'random_state': 42, 'solver': 'auto'}
Wall time: 949 ms

 

★주목!!

# 교차 검증용 평가 함수(MAE 계산)
mae_scorer = metrics.make_scorer(mean_absolute_error, greater_is_better=False)

==> 문제에서 MAE를 기반한 점수 출력이므로 교차검증용 mae_scorer 생성시킨다!!!

 

==> 이런식으로 최적의 하이퍼파라미터 그리드서치로 찾아냈다

 

# 타깃값 1일 확룰 예측

y_preds= best_model_grid_search_ridge.predict(X_test)
# y_preds
from sklearn.model_selection import train_test_split

num_train = len(train) # 훈련 데이터 개수

# 훈련 데이터와 테스트 데이터 나누기

X= all_data[:num_train] # 0~num_train -1 행
X_test = all_data[num_train:] # num_train ~ 마지막 행

y = train['yield'].values


X_train , X_valid , y_train, y_valid = train_test_split(X,y, test_size = 0.2, random_state=0)
from sklearn.metrics import mean_absolute_error

# 모델 학습 (예시로 Linear Regression 모델 사용)

# 검증 데이터에 대한 예측 수행
y_pred = best_model_grid_search_ridge.predict(X_valid)

# MAE 계산
mae = mean_absolute_error(y_valid, y_pred)
print("MAE:", mae)

==> gridsearch로 찾은 최적의 하이퍼파라미터를 바탕으로 Ridge모델을 시행하여 검증 데이터에 대한 MAE 계산

 

MAE: 368.90375712305973

 

==> 조금 높아졌다? ==> 선형회귀보다

 

Ridge_Linear 점수

==> 1615등 / 1800 등 조금 높아졌다

728x90
반응형

+ Recent posts