在Sklearn中运行SVM时出现值错误

2024-09-28 20:49:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用numpy数组做支持向量机的问题。在

import numpy as np
from sklearn import svm

我有3个类/标签(malefemalena),表示如下:

^{pr2}$

每个类由3个变量(heightweightage)定义为训练数据:

male_height = np.array([111,121,137,143,157])
male_weight = np.array([60,70,88,99,75])
male_age = np.array([41,32,73,54,35])

males = np.hstack([male_height,male_weight,male_age])

female_height = np.array([91,121,135,98,90])
female_weight = np.array([32,67,98,86,56])
female_age = np.array([51,35,33,67,61])

females = np.hstack([female_height,female_weight,female_age])

na_height = np.array([96,127,145,99,91])
na_weight = np.array([42,97,78,76,86])
na_age = np.array([56,35,49,64,66])

nas = np.hstack([na_height,na_weight,na_age])

现在,我需要为训练数据拟合支持向量机方法,以预测给定这三个变量的类:

height_weight_age = [100,100,100]

clf = svm.SVC()
trainingData = np.vstack([males,females,nas])

clf.fit(trainingData, labels)

result = clf.predict(height_weight_age)

print result

很遗憾,出现以下错误:

  ValueError: X.shape[1] = 3 should be equal to 15, the number of features at training time

我应该如何修改trainingDatalabels以获得正确答案?在


Tags: importnumpyagenparray向量malefemale
1条回答
网友
1楼 · 发布于 2024-09-28 20:49:13

hstack给出一维数组。您需要形状为(n_samples, n_features)的二维数组,可以从vstack中获得。在

In [7]: males = np.hstack([male_height,male_weight,male_age])

In [8]: males
Out[8]: 
array([111, 121, 137, 143, 157,  60,  70,  88,  99,  75,  41,  32,  73,
        54,  35])

In [9]: np.vstack([male_height,male_weight,male_age])
Out[9]: 
array([[111, 121, 137, 143, 157],
       [ 60,  70,  88,  99,  75],
       [ 41,  32,  73,  54,  35]])

In [10]: np.vstack([male_height,male_weight,male_age]).T
Out[10]: 
array([[111,  60,  41],
       [121,  70,  32],
       [137,  88,  73],
       [143,  99,  54],
       [157,  75,  35]])

你需要枚举一个标签的数组,而不仅仅是一个标签列表。在修正了所有变量后,我可以训练一个支持向量机,并应用如下:

^{pr2}$

(请注意,我使用的是字符串标签而不是数字标签。我还建议您标准化特征值,因为它们的范围相当不同。)

相关问题 更多 >