class_docstr: Class for applying feature selection operations on tabular data 
class_docstr_tok: ["Class","for","applying","feature","selection","operations","on","tabular","data"]
docstr: Update column types after applying feature selection operations 
docstr_tok: ["Update","column","types","after","applying","feature","selection","operations"]
code: def _update_column_types(
      self, source_features_shape, output_data: OutputData
  ):
      """Update column types after applying feature selection operations"""
      if len(source_features_shape) < 2:
          return output_data
      if self.features_columns_number > 1:
          cols_number_removed = (
              source_features_shape[1] - output_data.predict.shape[1]
          )
          if cols_number_removed:
              # There are several columns, which were dropped
              feature_type_ids = (
                  output_data.supplementary_data.col_type_ids[
                      "features"
                  ]
              )
  
              # Calculate
              output_data.supplementary_data.col_type_ids[
                  "features"
              ] = feature_type_ids[self.remain_features_mask]
  
imports: from typing import Optional
  import numpy
  from sklearn.feature_selection import RFE
  from sklearn.linear_model import LinearRegression, LogisticRegression
  from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor
  from fedot.core.data.data import InputData, OutputData
  from fedot.core.operations.evaluation.operation_implementations.implementation_interfaces import DataOperationImplementation
  from fedot.core.operations.operation_parameters import OperationParameters
label_desc: Use image node_id 4 for calling the FeatureSelectionImplementation obj's underlying member method code with example usage: obj._update_column_types(source_features_shape, output_data) and returns: output_data