python - 如何在 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 个新列。
解决方案
推荐阅读
- python - 2020 CCC J5/Q2密室逃脱(Python)BFS优化
- javascript - VS Code 终端出现在侧面而不是底部
- node.js - 在 API 中使用快速会话
- php - 打印 $row['id'] 时出现未定义的索引错误
- algorithm - 以 |xa| 形式查询多个方程在 x 处的最小值 + b
- php - Laravel Websocket 向特定的 Android 设备发送消息
- python - 如何根据列中的模式填充 Pandas 数据框中的缺失值?
- r - 创建空间权重矩阵但没有 shp 文件
- git - git clone 没有克隆现有的远程存储库
- javascript - 数据表 UTF-8 问题