我正在尝试使用 SVM,但在使用 pandas 数据框时我不知道如何拟合模型。如果我的数据是这样的:
df = pd.DataFrame({"x": ['011', '100', '111'] , "y": [0,1,0]})
df.x.apply(lambda x: np.array(list(map(int,x))))
>>>df
x y
0 [0, 1, 1] 0
1 [1, 0, 0] 1
2 [1, 1, 1] 0
如果我尝试以这种方式拟合模型:
clf = svm.SVC().fit(df.x, df.y)
我收到这个错误:
ValueError: setting an array element with a sequence.
使用此数据框拟合 SVM 的正确方法是什么?
请您参考如下方法:
df = pd.DataFrame({"x": ['011', '100', '111'] , "y": [0,1,0]})
df.x = df.x.apply(lambda x: list(map(int,x)))
df
x y
0 [0, 1, 1] 0
1 [1, 0, 0] 1
2 [1, 1, 1] 0
df.x 是一列数组。这可能不是存储数据的最佳方式,而且 sklearn 似乎不太擅长理解它。将所有内容转换为列表列表并将 that 传递给 SVC 会更简单。试试这个:
x = df.x.tolist()
print(x)
[[0, 1, 1], [1, 0, 0], [1, 1, 1]]
SVC().fit(x, df.y)
