如何在 MLP 算法中将字符串作为输入?

How can I give string as input in MLP algorithm?

我正在实施 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()

我遇到了这个错误

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

例如,如果你有 10 个 类,你将它们转换为 0 到 9 之间的整数(你可以使用 sklearn 将数据转换为 Label Encoder 这样的格式)

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

无论如何,由于您使用的是 pandas 数据框,因此可以更轻松地完成。要获得 class 标签向量 y 太简单了。假设列名是 'label':

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

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

想知道我为什么选择 [0] 分解? pandas.factorize 不仅会为您提供我们在这里需要的 codes,还会为您提供编码为 (uniques).

的该列的唯一值

同样,如果来自特征矩阵 X 的某些输入特征列是 分类 (并且非数字),因此对其进行数字编码。分类变量有两种编码方式:

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