강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

T2-4. House Prices (Regression)

작성

·

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 값으로 평가합니다.

데이터의 특성과 분포에 따라서 더 세밀한 데이터 전처리나 모델 튜닝이 필요할 수도 있으니, 이를 참고하시어 필요한 조정을 해보시면 좋을 것 같습니다.

인프런님, 위와같이 실행했는데 이 에러가 뜹니다,,

 

ValueError: y contains previously unseen labels: 'Membran'

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기