RandomForestClassifier differ from BaggingClassifier
The RandomForestClassifier introduces randomness externally (relative to the individual tree fitting) via bagging as BaggingClassifier does.
However it injects randomness also deep inside the tree construction procedure by sub-sampling the list of features that are candidate for splitting: a new random set of features is considered at each new split. This randomness is controlled via the max_features parameter of RandomForestClassifier that has no equivalent in BaggingClassifier(base_estimator=DecisionTreeClassifier()).
How is using a BaggingClassifier with baseestimator=RandomForestClassifier differ from a RandomForestClassifier in sklearn?