Skip to main content
 首页 » 编程设计

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

2025年05月04日12mayingbao

我正在尝试使用 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)