[LightGBM활용_Kaggle-타이타닉-02] 피처별 전처리하기
2023. 5. 20. 17:00
728x90
반응형
https://knowallworld.tistory.com/441
==> 1편 EDA 완료
1. 피처별 전처리하기!
1. 'AGE' 열의 Null 값에 대한 전처리 하기
binary_col = []
object_col = []
for i in all_data.columns.tolist():
if all_data[i].dtype in ['int64' , 'float64']:
binary_col.append(i)
else:
object_col.append(i)
==> 우선 binary_col , object_col 2가지로 ==> 연속형 피처와 명목형 피처를 구분하는 리스트 2개 생성
all_data[object_col]
all_data[binary_col]
1-1> 'AGE' 의 값을 예측하기 위하여 선형회귀 모델 사용하기
==> 다른 모델 이용하여 사용 해보자 추후에!
from sklearn.preprocessing import OneHotEncoder ,LabelEncoder
encoder = OneHotEncoder() # 원-핫 인코더 생성
# le = LabelEncoder()
for i in range(len(object_col)):
f_encoded = pd.get_dummies(all_data, columns=[object_col[i]])
# all_data_label_encoded = encoder.fit_transform(all_data[object_col[i]])
all_data[object_col[i]] = f_encoded
all_data
==> 우선 선형회귀 모델을 돌리기 위해서는 명목형 피처값들을 숫자로 변환해주어야 한다.
==> 그러기 위해서는 LabelEncoder 보다 OneHotEncoder를 통해 선형회귀를 돌리는것이 좋다!
1-2> 훈련 데이터 , Test 데이터 나누기
num_train = len(train) # 훈련데이터 개수
print(num_train)
X_train = all_data[~pd.isnull(all_data['Age'])]
X_test = all_data[pd.isnull(all_data['Age'])]
X_train = X_train.drop(['Age'] , axis =1)
X_test = X_test.drop(['Age'] , axis =1)
train2 = all_data[~pd.isnull(all_data['Age'])]
y = train2['Age']
y
1-3> 선형회귀 학습
from sklearn.linear_model import LinearRegression
linear_reg_model = LinearRegression()
linear_reg_model.fit(X_train , y) # 모델 훈련
1-4> 선형회귀 테스트
preds = linear_reg_model.predict(X_test)
preds =preds.clip(0,100)
preds.tolist()
preds
==> clip() 을 통해 범위 지정하기
nan_idx = all_data['Age'].isnull()
all_data.loc[nan_idx, 'Age'] = preds
==> test값 ==> NULL 값들 ==> all_data의 NUll값에 대해 예측값으로 채워 넣는다.
all_data.info()
728x90
반응형
'머신러닝 > LightGBM' 카테고리의 다른 글
[LightGBM활용_Kaggle-타이타닉-04] 모델 돌려보기(단독_ Descision Tree) (0) | 2023.05.23 |
---|---|
[LightGBM활용_Kaggle-타이타닉-03] 피처별 전처리하기★pd.cut (0) | 2023.05.20 |
[LightGBM활용_Kaggle-타이타닉-01] EDA 및 전처리하기 (0) | 2023.05.20 |
[PYTHON - 머신러닝_LightGBM-02]랜덤 그리드 서치★L1정규화★L2정규화★LGBMClassifer()와 train()의 차이 (0) | 2023.01.27 |
[PYTHON - 머신러닝_LightGBM]★geopy.distance이용한 거리계산★groupby★agg활용한 통계계산★time 라이브러리★민감도, ROC곡선★ (0) | 2023.01.27 |