해결된 질문
작성
·
40
0
#print(train.shape, test.shape)
#print(train.isnull().sum())
#print(test.isnull().sum())
Xtrain = train.drop(['ID', 'Segmentation'], axis = 1)
ytrain = train['Segmentation']
Xtest = test.drop(['ID'], axis = 1)
test_ID = test['ID']
col_cat = Xtrain.select_dtypes(include = 'object').columns
col_num = Xtrain.select_dtypes(exclude = 'object').columns
# 수치형 스케일링
from sklearn.preprocessing import MinMaxScaler, OneHotEncoder
scaler = MinMaxScaler()
Xtrain[col_num] = scaler.fit_transform(Xtrain[col_num])
Xtest[col_num] = scaler.transform(Xtest[col_num])
# 범주형 인코딩
encoder = OneHotEncoder(handle_unknown = 'ignore', sparse_output = False)
Xtrain_ohe = encoder.fit_transform(Xtrain[col_cat])
Xtest_ohe = encoder.transform(Xtest[col_cat])
from sklearn.model_selection import train_test_split
X_train, X_val, y_train, y_val = train_test_split(Xtrain_ohe, ytrain, test_size = 0.2, random_state = 2002)
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_train, y_train)
y_pred = model.predict(X_val)
y_test = model.predict(Xtest_ohe)
submit = pd.DataFrame({'ID' : test_ID, 'y_test' : y_test})
submit.to_csv('0000.csv', index = False)
submit2 = pd.read_csv('0000.csv')
print(submit2)
이정도 수준으로 코딩 작성했는데 큰 문제 없겠죠?
중급 ~ 고급사이로 인지됩니다 제가 생각하기엔
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 우현님이 작성하신 코드에 대해 몇 가지 유의사항과 개선점, 그리고 추가적인 설명을 드리도록 하겠습니다.
OneHotEncoder 사용법:
OneHotEncoder
는 One-Hot-Encoding을 통해서 범주형 데이터를 수치형 데이터로 변환합니다. 현재 사용하신 방식은 잘 적용되었습니다. 다만, One-Hot-Encoding 과정에서는 train과 test 데이터의 카테고리 수가 맞지 않을 수 있으므로 유의해야 합니다. 예를 들어, train 데이터에만 존재하는 카테고리가 있을 경우, test 데이터도 훈련 데이터와 동일한 열 구조를 가지도록 처리해야 합니다.MinMaxScaler 적용:
RandomForestClassifier:
RandomForestClassifier
는 트리 기반 모델이기 때문에 데이터의 스케일에 민감하지 않지만, 많이 사용하는 모델 중 하나로 잘 선택하셨습니다.결과 제출 준비:
submit = pd.DataFrame({'ID' : test_ID, 'y_test' : y_test})
대신 submit = pd.DataFrame({'ID' : test_ID, 'Segmentation' : y_test})
와 같이 타겟 컬럼 이름을 원래 제출 형식에 맞춰야 합니다.model.predict() 결과:
y_pred
및 y_test
를 저장하면서 파일에 출력하는 부분은 잘 구성되어 있습니다.유사 질문 예시와 해결 접근 방법이 관련된 링크를 몇 개 추천드릴게요. 이 링크들은 머신러닝에서 데이터 전처리와 인코딩에 대한 구체적인 사례를 제공합니다:
작성하신 코드의 구조나 사용된 방법론이 중급에서 고급 사이로 잘 구성되어 있다고 생각됩니다. 코드가 중급~고급 수준으로 발전할 수 있도록 추가적인 예제를 참고하면 더욱 도움이 될 것 같습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.