docstr: TODO: Hummingbird does not yet support strings in this context. Should raise error.
  When this feature is complete, change this test.
docstr_tok: ["TODO",":","Hummingbird","does","not","yet","support","strings","in","this","context",".","Should","raise","error",".","When","this","feature","is","complete",",","change","this","test","."]
code: def test_pipeline_column_transformer_string(self):
      """
      TODO: Hummingbird does not yet support strings in this context. Should raise error.
      When this feature is complete, change this test.
      """
      # fit
      titanic_url = "https://raw.githubusercontent.com/amueller/scipy-2017-sklearn/091d371/notebooks/datasets/titanic3.csv"
      data = pandas.read_csv(titanic_url)
      X = data.drop("survived", axis=1)
      y = data["survived"]
      # SimpleImputer on string is not available for string
      # in ONNX-ML specifications.
      # So we do it beforehand.
      X["pclass"].fillna("missing", inplace=True)
  
      X_train, X_test, y_train, y_test = train_test_split(
          X, y, test_size=0.2
      )
  
      numeric_features = ["age", "fare"]
      numeric_transformer = Pipeline(
          steps=[
              ("imputer", SimpleImputer(strategy="median")),
              ("scaler", StandardScaler()),
          ]
      )
  
      categorical_features = ["pclass"]
      categorical_transformer = Pipeline(
          steps=[("onehot", OneHotEncoder(handle_unknown="ignore"))]
      )
  
      preprocessor = ColumnTransformer(
          transformers=[
              ("num", numeric_transformer, numeric_features),
              ("cat", categorical_transformer, categorical_features),
          ]
      )
  
      clf = Pipeline(
          steps=[
              ("preprocessor", preprocessor),
              ("classifier", LogisticRegression(solver="liblinear")),
          ]
      )
  
      to_drop = {
          "parch",
          "sibsp",
          "cabin",
          "ticket",
          "name",
          "body",
          "home.dest",
          "boat",
          "sex",
          "embarked",
      }
  
      X_train = X_train.copy()
      X_test = X_test.copy()
      X_train["pclass"] = X_train["pclass"].astype(np.int64)
      X_test["pclass"] = X_test["pclass"].astype(np.int64)
      X_train = X_train.drop(to_drop, axis=1)
      X_test = X_test.drop(to_drop, axis=1)
  
      clf.fit(X_train, y_train)
  
      torch_model = hummingbird.ml.convert(clf, "torch", X_test)
  
      self.assertTrue(torch_model is not None)
  
      np.testing.assert_allclose(
          clf.predict(X_test),
          torch_model.predict(X_test),
          rtol=1e-06,
          atol=1e-06,
      )
  
imports: import unittest
  import numpy
  from sklearn import datasets
  from sklearn.compose import ColumnTransformer
  from sklearn.datasets import load_iris, load_diabetes
  from sklearn.svm import LinearSVC, LinearSVR
  from sklearn.datasets import make_regression
  from sklearn.decomposition import PCA
  from sklearn.linear_model import LogisticRegression, RidgeCV
  from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier
  from sklearn.model_selection import train_test_split
  from sklearn.pipeline import Pipeline, FeatureUnion, make_pipeline
  from sklearn.preprocessing import OneHotEncoder, StandardScaler, MinMaxScaler
  import hummingbird.ml
  from hummingbird.ml._utils import pandas_installed, onnx_runtime_installed
  from hummingbird.ml import constants
  from onnxconverter_common.data_types import FloatTensorType, Int64TensorType, StringTensorType
label_desc: Use image node_id 6 for calling the TestSklearnPipeline obj's underlying member method code with example usage: obj.test_pipeline_column_transformer_string() without return types