자격증

빅데이터분석기사 실기 공부 - 2유형(회귀)

studyoung 2024. 6. 17. 23:40
반응형

※ 해당 글은 '빅데이터분석기사' 자격증 취득을 위해 개인 공부기록 용도로 작성된 내용입니다.

(출처 :유튜브 AI 너는 아니 AI you know?)


 


# 1. 데이터 로드 및 확인

# 2-1. 결측값 처리(대체) - 최빈값
# 2-2. 라벨 인코딩

# 3-1. 모델링(데이터 분할)
# 3-2. 모델링(회귀)

# 4. 성능평가

# 5. 테스트 모델 예측

# 6-1. 테스트 결과 제출
# 6-2. 결과 확인


import pandas as pd

# 1. 데이터 로드 및 확인
df = pd.read_csv("content/used_cars_price_data.csv")
# print(df.info()) # 결측값(fuel_type, accident, clean_title) 인코딩(model_year 제외 모든 컬럼 문자열임)

# 2-1. 결측값 처리(대체) - 최빈값
df['fuel_type'].fillna(df['fuel_type'].mode()[0], inplace = True)
df['accident'].fillna(df['accident'].mode()[0], inplace = True)
df['clean_title'].fillna(df['clean_title'].mode()[0], inplace = True)
# print(df.info())

# 2-2. 라벨 인코딩
from sklearn.preprocessing import LabelEncoder
# print(help(sklearn.preprocessing.LabelEncoder))

le = LabelEncoder()
le.fit(df['brand'])
df['brand'] = le.transform(df['brand'])

df['model'] = le.fit_transform(df['model'])
df['milage'] = le.fit_transform(df['milage'])
df['fuel_type'] = le.fit_transform(df['fuel_type'])
df['engine'] = le.fit_transform(df['engine'])
df['transmission'] = le.fit_transform(df['transmission'])
df['ext_col'] = le.fit_transform(df['ext_col'])
df['int_col'] = le.fit_transform(df['int_col'])
df['accident'] = le.fit_transform(df['accident'])
df['clean_title'] = le.fit_transform(df['clean_title'])
df['price'] = le.fit_transform(df['price'])
# print(df.info())

# + train 3800, 테스트 209
train = df.iloc[:3800,:]
test = df.iloc[-209:,:]
# print(train.info())
# print(test.info())

# 3-1. 모델링(데이터 분할)
import numpy as np
from sklearn.model_selection import train_test_split
# print(help(sklearn.model_selection.train_test_split))

X = train.drop(columns=['price'])
y = train['price']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=10)

# 3-2. 모델링(회귀)
from sklearn.ensemble import RandomForestRegressor
# print(help(sklearn.ensemble.RandomForestRegressor))

regr = RandomForestRegressor(n_estimators=120, max_depth=15, random_state=10)
regr.fit(X_train, y_train)
pred1 = regr.predict(X_test)

# 4. 성능평가
from sklearn.metrics import mean_squared_error
# print(help(sklearn.metrics.mean_squared_error))

mse = mean_squared_error(y_test, pred1)
rmse = np.sqrt(mse)

# print(mse) # 121862.20429051273
# print(rmse) # 349.0876742173988
# print(mse**0.5) # 349.0876742173988

# 5. 테스트 모델 예측
test_X = test.drop(columns=['price'])
pred2 = regr.predict(test_X)

# 6-1. 테스트 결과 제출
pd.DataFrame({'price':pred2}).to_csv('result.csv', index=False)

# 6-2. 결과 확인
# result = pd.read_csv('result.csv')
# print(result)

 

반응형