如何在 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
的某些输入特征列是 分类 (并且非数字),因此对其进行数字编码。分类变量有两种编码方式:
我正在实施 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
的某些输入特征列是 分类 (并且非数字),因此对其进行数字编码。分类变量有两种编码方式: