【问题标题】:How to use OneHotEncoder and Pipeline to make new predictions?如何使用 OneHotEncoder 和 Pipeline 进行新的预测?
【发布时间】:2020-10-06 14:47:32
【问题描述】:

我正在完成一个专注于 OneHotEncoder 的教程。我得到了编码特征背后的想法,但是我在使用带有管道的编码器进行新预测时遇到了一点问题。其中两个特征——“Sex”和“Embarked”——是分类的而不是数字的。当创建一个新的 numpy 数组来进行预测时,你是否使用初始值,比如“male”和“C”,或者说,“1”和“2”来进行新的预测?我收到以下错误:“ValueError:仅熊猫数据帧支持使用字符串指定列”,鉴于我使用的值是数字,这很奇怪。无论如何,我是否必须将管道安装到 X_new 才能做出新的预测?如果是这样,我该怎么做?

X_new = [[3, 1, 0]] OR X_new = [['3','male', 'C']]

pipe.predict(X_new)

完整代码:

import pandas as pd

import numpy as np


df = pd.read_csv("https://raw.githubusercontent.com/---/pandas-videos/master/data/titanic_train.csv")


from sklearn.linear_model import LogisticRegression

logreg = LogisticRegression(solver='lbfgs')



from sklearn.model_selection import cross_val_score

cross_val_score(logreg, X, y, cv=5, scoring='accuracy').mean()


from sklearn.preprocessing import OneHotEncoder

ohe = OneHotEncoder(sparse=False)


X = df.drop('Survived', axis='columns')


from sklearn.compose import make_column_transformer

column_trans = make_column_transformer(

  (OneHotEncoder(), ['Sex', 'Embarked']),

remainder='passthrough')


column_trans.fit_transform(X)


from sklearn.pipeline import make_pipeline

pipe = make_pipeline(column_trans, logreg)



cross_val_score(pipe, X, y, cv=5, scoring='accuracy').mean()



X_new = [[3, 1, 0]]

pipe.predict(X_new)

【问题讨论】:

    标签: python pandas pipeline one-hot-encoding


    【解决方案1】:

    当您应用 OneHotEncoder 时,您指定的分类列将根据分类列中唯一值的数量转换为多个整数列。

    例如,性别列包含“男”和“女”,那么它将原来的列转换为“男”和“女”2列。它与 LabelEncoder 不同。

    如果要应用管道、逻辑回归和 OneHotEncoder,可以使用管道来拟合训练数据。

    pipe.fit(X,y)
    

    然后您可以应用预测。这是一个示例,当我应用性别、年龄和上船这 3 个特征并将 OHE 应用于 Sex 和上船时。

    X_new = [['female', 20, 'C']]
    X_new_df = pd.DataFrame (X_new,columns=['Sex','Age','Embarked'])
    pipe.predict(X_new_df)
    

    但是,您在代码中使用的特征是除标注分类(“Survived”)之外的所有特征,即 11 个特征。输入的数量必须等于或大于拟合模型,而您只应用可能提示和错误的3列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 2011-09-14
      • 2020-10-30
      • 2015-06-06
      • 2012-12-13
      • 1970-01-01
      相关资源
      最近更新 更多