title: redefining or overriding metaestimators in sklearn?
body: <p>I am writing a custom <code>sklearn</code> pipeline.</p>
  
  <p>I need it to be able to process <code>pandas</code> dataframes.
  If I create custom transformers and estimators by creating child classes of the built-in</p>
  
  <pre><code>BaseEstimator, ClassifierMixin,TransformerMixin 
  </code></pre>
  
  <p>all these classes automatically cast the dataframes to numpy.ndarray during the fit/transform function, when <code>_check_X_y</code> is called precisely.</p>
  
  <p>I am aware of the existence of <a href="https://github.com/scikit-learn-contrib/sklearn-pandas" rel="nofollow noreferrer">https://github.com/scikit-learn-contrib/sklearn-pandas</a>, however depending on an unstable binding between two unstable libraries is not an option.</p>
  
  <p>Therefore I have implemented my estimators without inheriting anything from <code>BaseEstimator, ClassifierMixin, TransformerMixin</code> but just defining the methods requested by the api <code>fit(),fit_transform(),transform(),_get_params(),_set_params()</code>.
  To me, it seems this works perfectly, also in combination with <code>GridSearchCV</code>.</p>
  
  <p>I can just convert the <code>df</code> to <code>numpy</code> only when needed</p>
  
  <p>My question is: is there any reason why I should not be doing this?
  Do I miss any hidden sklearn API requirement?</p>