이전 포스트에서 이어진다
Featrue Engineering 첫 번째 코드
이전과 같은 오류다
pe_all = pe_all.drop(['filename', 'MD5', 'packer_type'], axis=1) 로 수정한다.
Featrue Engineering세 번째 코드
do_randomforest 함수에서 self.y_train이 2D 배열일경우 경고가 뜬다.
fit() 메서드에 전달되기 전에 y_train을 1D 배열로 변환해야 한다. scikit-learn의 fit() 메서드는 1D 배열을 사용하므로, y_train을 ravel()을 사용해 1D 배열로 변환 해 준다.
model.py의 랜던포레스트 메서드를 수정한다. 띄어쓰기에 주의한다.
clf = RandomForestClassifier()
# DataFrame을 NumPy 배열로 변환하고 평탄화
y_train_reshaped = self.y_train.values.ravel()
clf.fit(self.x_train, y_train_reshaped)
#clf.fit(self.x_train, self.y_train)
경고가 사라졌다.
Featrue Engineering 여섯 번째 코드, 아홉번째코드, 열 번째코드
pandas copy 문제
DataFrame을 수정할 때 발생하는 경고로 결과로 복사본을 반환하고 원본 데이터는 변경되지 않을 수 있다는 경고이다.
이는 예전엔 이런식으로 사용해도 되었지만 현재는 추천되지 않는 방식이기 때문에 경고가 발생한다.아래와 같이 변경해준다.
여섯번째
df.loc['pe_top20', 'avg'] = avg_20
아홉번째
X = X.copy() # X를 명시적으로 복사 (추가 코드)
X['class'] = Y
열번째
df.loc['pe_top19_cor', 'avg'] = avg_20