인프런 커뮤니티 질문&답변
Mydummyclassifier() 클래스 질문
작성
·
252
0
# %ls pandas\ n\ numpy/titanic
titanic_df = pd.read_csv("pandas n numpy/titanic/train.csv")
y_titanic_df = titanic_df.Survived
x_titanic = titanic_df.drop("Survived", axis = 1)
x_titanic_df = preprocess(x_titanic)
x_train, x_test, y_train, y_test = train_test_split(x_titanic_df, y_titanic_df, test_size = 0.2,
random_state = 0)
myclf = MyDummyClassifier()
myclf.fit(x_train, y_train)
mypredictions = myclf.predict(x_test)
print("Dummy Classifier의 정확도는: {0:.4f}".format(accuracy_score(y_test, mypredictions)))
강의 내용 중 MyDummyClassifier라는 클래스를 만들때 .fit 이라는 method는 아무것도 하지 않고 pass 시켰는데
위 코드에서 myclf.fit(x_train, y_train) 를 하는 이유가 따로 있나요?? 아직 파이썬의 class 관련 내용은 깊게 공부를 하지 않아
미숙하여 질문을 남기게 되었습니다..
또한, 함수를 만들지 않고 클래스 따로 만들어 사용할때 특별한 장점이 있는지 궁금합니다!!!
답변 1
0
안녕하십니까,
사이킷런은 Estimator 클래스(Classifier or Regressor)를 학습하기 위해서는 반드시 fit()을 수행해야 합니다. fit()을 수행해야 학습된 estimator 객체가 됩니다. 학습 모델(estimator 객체)이 된 후에 predict()를 수행하면 이제 예측을 수행합니다. myclf.fit()은 아무런 일을 하지않는 모델을 학습시켰다는 의미로 생각하시면 될 것 같습니다.
그리고 일반적으로 분류와 회귀를 수행하는 Estimator 클래스는 사이킷런 내부에서 클래스로 제공되지만 나만의 Estimator를 별도로 만들기 위해서는 반드시 아래와 같이 BaseEstimator를 상속받은 클래스로 만들어져야 합니다. 그리고 BaseEstimator 클래스를 상속받으면 비록 pass를 할지라도 반드시 fit(), predict() 메소드를 명시적으로 구현해야 합니다.
class MyDummyClassifier(BaseEstimator)
감사합니다.





