首页 > 解决方案 > 如何在 svm 中训练一个热编码列?

问题描述

我想使用 svm 训练来自 uci 的数据集“成人”,我必须在其中对薪水列进行分类。它是 >=50k 或 <50k 。我将它作为一个热编码转换为具有 0 和 1 的两列。

dataset = pd.get_dummies(dataset, columns=['salary'], prefix = ['salary'])

但是现在我无法训练数据,因为我应该只有一列作为 y 标签。当我尝试训练它时,我收到以下错误:

这是我的训练功能:

results_arr=[]
def training_func(x_train,y_train,x_test,y_test):
  model=SVC(C=10,gamma=10, verbose=True)
  model.fit(x_train,y_train)
  y_predict=model.predict(x_test)
  results_arr.append(metrics.accuracy_score(y_test, y_predict))

在这里我在拆分后训练数据:

training_func(x_train1,y_train1,x_test1,y_test1)

和错误:

ValueError: 错误的输入形状 (13751, 2)

我还必须使用内核机器训练数据集,在那里我只能使用一列作为 y 列进行训练或测试。

在其他一些数据集中,我也会有超过两列代表标签列,经过一次热编码。在这种情况下如何训练数据?

更新:如果目标 Column 具有二进制值,我可以在 one-hot 编码后仅使用结果 2 Columns 之一进行训练。但是,如果我在目标列中有 10 个不同的值,我该怎么办?因为在 one-hot 编码后,它将表示为 10 个新列。

标签: pythonsvmone-hot-encoding

解决方案


推荐阅读