728x90
반응형

https://knowallworld.tistory.com/441

 

[LightGBM활용_Kaggle-타이타닉-01] EDA 및 전처리하기

1. EDA(탐색적 분석을 진행하자!) 우선 타이타닉 데이터에 대해 살펴보자! 1> 생존자 파악하기 def write_percent(ax , total_size): '''도형 객체를 순회하며 막대 상단에 타깃값 비율 표시''' for patch in ax.patch

knowallworld.tistory.com

==> 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]

object_col 에 대한 DF

all_data[binary_col]

binary_col에 대한 DF

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를 통해 선형회귀를 돌리는것이 좋다!

 

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()

NULL 값이 없는 all_data

 

728x90
반응형

+ Recent posts