代码之家  ›  专栏  ›  技术社区  ›  Cashew

如何让SK-Learn分类器接受2D数组作为预测的输入?

  •  0
  • Cashew  · 技术社区  · 6 年前

    因此,我创建了一个混合数据类型的模型,并使用SK Learn文档中推荐的示例,使用列转换器构建classifier。

    https://scikit-learn.org/stable/auto_examples/compose/plot_column_transformer_mixed_types.html#sphx-glr-auto-examples-compose-plot-column-transformer-mixed-types-py

    由于输入来自csv,并被转换为Pandas数据帧,所以看起来X\u test、X\u train、y\u test、y\u train也都是数据帧。通过YU测试clf.预测()函数运行良好,我收到预测。

    1 回复  |  直到 6 年前
        1
  •  0
  •   ktang    6 年前

    为了使您的分类器与Google云机器学习引擎(CMLE)兼容,您需要从管道中分离出预处理器和LogisticRegression分类器。您将需要在客户端执行预处理逻辑,独立分类器将托管在CMLE上。

    ...
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    
    preprocessor = ColumnTransformer(
        transformers=[
            ('num', numeric_transformer, numeric_features),
            ('cat', categorical_transformer, categorical_features)])
    model = LogisticRegression(solver='lbfgs')
    
    X_train_transformed = preprocessor.fit_transform(X_train)
    model.fit(X_train_transformed, y_train)
    print("model score: %.3f" % model.score(preprocessor.transform(X_test), y_test))
    

    您可以导出模型(使用pickle或joblib)并将其部署到CMLE上。在构造对CMLE的json请求以进行预测时,首先需要使用以下命令将数据帧预处理为二维数组: preprocessor.transform(X_test) .