yoonkt200 / python-data-analysis

<이것이 데이터 분석이다 - 파이썬 편, 한빛미디어>의 예제입니다. 독자 여러분의 의견을 수렴하여 상시 업데이트 진행중입니다.
MIT License
98 stars 109 forks source link

질문있어요 기태님~~ #2

Open phong0104 opened 3 years ago

phong0104 commented 3 years ago

이것이 데이터 분석이다 265p에서 똑같이 쳤는데 오류가 자꾸 나네요ㅠㅠ

오류 -> KeyError: "['month', 'phone_model', 'maker'] not in index"

따라친 코드는 아래와 같아요. 어떻게 해결해야 할까요.... (그 전 코드 까지는 이상 없어요)

from sklearn.model_selection import train_test_split from sklearn.feature_extraction import DictVectorizer from sklearn.ensemble import RandomForestRegressor from sklearn.metrics import r2_score from sklearn.metrics import mean_squared_error

데이터를 학습/테스트용 데이터로 분리

df = df[['price', 'phone_model', 'factory_price', 'maker', 'price_index', 'month']] df = pd.get_dummies(df, columns=['phone_model', 'maker', 'month']) X = df.loc[:, df.columns != 'price'] y = df['price'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

랜덤 포레스트 모델을 학습

forest = RandomForestRegressor(n_estimators=1000, criterion='mse') forest.fit(X_train, y_train) y_train_pred = forest.predict(X_train) y_test_pred = forest.predict(X_test)

학습한 모델을 평가

print('MSE train: %.3f, test: %.3f' % (mean_squared_error(y_train, y_train_pred), mean_squared_error(y,test, y_test_pred))) print('R^2 train: %.3f, test: %.3f' % (r2_score(y_train, y_train_pred), r2_score(y_test, y_test_pred)))

yoonkt200 commented 3 years ago

df = df[['price', 'phone_model', 'factory_price', 'maker', 'price_index', 'month']] 이 부분에서 오류가 나는 건가요??

column이 존재하지 않는다는 것으로 보아, 아마 앞 코드에서 오탈자가 있거나 변수 선언에서 생략된 부분이 있을 것 같습니다. 한번 df 선언이나 'month', 'phone_model', 'maker' column 들이 제대로 생성되었는지 확인해보시고, 그래도 실행이 안되시면 주피터 노트북 파일로 보내주세요.