【问题标题】:How can I give string as input in MLP algorithm?如何在 MLP 算法中将字符串作为输入?
【发布时间】:2021-09-04 08:56:00
【问题描述】:

我正在实现 MLP 分类器,我想将字符串作为输入。

df = pd.DataFrame(results)
X = df.iloc[:, [2]].values
y = df.iloc[:, [1]].values

X_train, X_test, y_train, y_test = train_test_split(X, y)
clf = MLPClassifier(random_state=6, max_iter=200).fit(X_train, 
y_train.ravel())
clf.predict()

我收到了这个错误

【问题讨论】:

    标签: python scikit-learn neural-network mlp


    【解决方案1】:

    无论如何,当您使用pandas 数据框时,您可以更轻松地做到这一点。对于获取类标签向量y,这太简单了。假设列名是“标签”:

    y = df['label'].factorize()[0]
    

    如果您没有列名,只需使用列号(对于您的情况df[1])。

    想知道为什么我在因式分解中采用了[0]pandas.factorize 不仅会为您提供我们在这里需要的codes,还会为您提供该列的唯一值,这些值已编码 (uniques)。

    再次,如果特征矩阵X 的某些输入特征列是分类(非数字),则对其进行数字编码。分类变量有两种编码方式:

    • 标签编码:如果该特征的值具有顺序或层次结构,则使用此编码。见here
    • 单热编码:如果该特征的值没有任何顺序或层次结构,则使用此编码技术。见here

    【讨论】:

      【解决方案2】:

      为了应用大多数机器学习算法,您需要将字符串表示为数字格式。

      例如,如果您有 10 个类,则将它们转换为从 0 到 9 的整数(您可以使用 sklearn 将数据转换为这种格式,例如 Label Encoder

      但这真的取决于您拥有哪种类型的数据,您可能还希望看到 one-hot encoding 表示将您的分类特征的每次出现映射到 N 维数组,其中 N 是您的特征的基数。

      【讨论】:

        猜你喜欢
        • 2016-05-16
        • 2021-08-17
        • 2020-04-10
        • 2021-02-26
        • 1970-01-01
        • 2013-07-18
        • 1970-01-01
        • 2017-05-05
        • 1970-01-01
        相关资源
        最近更新 更多