使用来自pandas DataFrame的数据拟合sklearn的SVM分类器

Ali*_*Ali 0 python numpy dataframe pandas scikit-learn

我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)

如果我尝试以这种方式拟合模型:

clf = svm.SVC().fit(df.x, df.y)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ValueError: setting an array element with a sequence.
Run Code Online (Sandbox Code Playgroud)

使用此数据框适合SVM的正确方法是什么?

cs9*_*s95 5

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
Run Code Online (Sandbox Code Playgroud)

df.x是一列数组.这可能不是存储数据的最佳方式,而且sklearn理解它似乎并不是很好.这将是简单的一切转换成一个列表的列表,并通过SVC.试试这个:

x = df.x.tolist()
print(x)
[[0, 1, 1], [1, 0, 0], [1, 1, 1]]
SVC().fit(x, df.y)
Run Code Online (Sandbox Code Playgroud)