작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
75
·
수정됨
0
# 시험환경 세팅 (코드 변경 X)
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
def exam_data_load(df, target, id_name="", null_name=""):
if id_name == "":
df = df.reset_index().rename(columns={"index": "id"})
id_name = 'id'
else:
id_name = id_name
if null_name != "":
df[df == null_name] = np.nan
X_train, X_test = train_test_split(df, test_size=0.2, shuffle=True, random_state=2021)
y_train = X_train[[id_name, target]]
X_train = X_train.drop(columns=[id_name, target])
y_test = X_test[[id_name, target]]
X_test = X_test.drop(columns=[id_name, target])
return X_train, X_test, y_train, y_test
df = pd.read_csv("../input/house-prices-advanced-regression-techniques/train.csv")
X_train, X_test, y_train, y_test = exam_data_load(df, target='SalePrice', id_name='Id')
X_train.shape, X_test.shape, y_train.shape, y_test.shape
((1168, 79), (292, 79), (1168, 2), (292, 2))
# 집 값 예측
# 예측할 변수 ['SalePrice']
# 평가: rmse, r2
# rmse는 낮을 수록 좋은 성능
# r2는 높을 수록 좋은 성능
죄송한데 이걸 레이블인코딩 후 랜덤포레스트로 핏 하고 RMSE와 r2_score로 평가하는
전체 코드좀 알 수 있을까요? 하나하나 질문하려니 계속 오류나거나 막힙니다,,
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
chandnd37님, 질문하신 내용에 대한 전체 코드는 다음과 같습니다.
# 필요한 라이브러리를 불러옵니다.
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestRegressor
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.model_selection import train_test_split
# 시험환경 세팅 함수 (변경하지 않습니다.)
def exam_data_load(df, target, id_name="", null_name=""):
if id_name == "":
df = df.reset_index().rename(columns={"index": "id"})
id_name = 'id'
else:
id_name = id_name
if null_name != "":
df[df == null_name] = np.nan
X_train, X_test = train_test_split(df, test_size=0.2, shuffle=True, random_state=2021)
y_train = X_train[[id_name, target]]
X_train = X_train.drop(columns=[id_name, target])
y_test = X_test[[id_name, target]]
X_test = X_test.drop(columns=[id_name, target])
return X_train, X_test, y_train, y_test
# 데이터를 불러옵니다.
df = pd.read_csv("../input/house-prices-advanced-regression-techniques/train.csv")
# 데이터를 분리합니다.
X_train, X_test, y_train, y_test = exam_data_load(df, target='SalePrice', id_name='Id')
# 레이블 인코딩을 수행합니다.
# 모든 문자열 특성에 대해 레이블 인코딩을 적용합니다.
for col in X_train.columns:
if X_train[col].dtype == 'object':
encoder = LabelEncoder()
X_train[col] = encoder.fit_transform(X_train[col].astype(str))
X_test[col] = encoder.transform(X_test[col].astype(str))
# 랜덤 포레스트 모델을 생성하고 훈련합니다.
model = RandomForestRegressor(n_estimators=100, random_state=2021)
model.fit(X_train, y_train['SalePrice'])
# 예측을 수행합니다.
y_pred = model.predict(X_test)
# RMSE와 R2 값을 계산합니다.
rmse = np.sqrt(mean_squared_error(y_test['SalePrice'], y_pred))
r2 = r2_score(y_test['SalePrice'], y_pred)
print(f'RMSE: {rmse:.4f}')
print(f'R2 Score: {r2:.4f}')
이 코드는 레이블 인코딩과 랜덤 포레스트를 사용하여 집 값(‘SalePrice’)을 예측하고, 결과를 RMSE와 R2 값으로 평가합니다.
데이터의 특성과 분포에 따라서 더 세밀한 데이터 전처리나 모델 튜닝이 필요할 수도 있으니, 이를 참고하시어 필요한 조정을 해보시면 좋을 것 같습니다.
인프런님, 위와같이 실행했는데 이 에러가 뜹니다,,