我有一个用numpy数组做支持向量机的问题。在
import numpy as np
from sklearn import svm
我有3个类/标签(male
,female
,na
),表示如下:
每个类由3个变量(height
,weight
,age
)定义为训练数据:
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
我应该如何修改trainingData
和labels
以获得正确答案?在
hstack
给出一维数组。您需要形状为(n_samples, n_features)
的二维数组,可以从vstack
中获得。在你需要枚举一个标签的数组,而不仅仅是一个标签列表。在修正了所有变量后,我可以训练一个支持向量机,并应用如下:
^{pr2}$(请注意,我使用的是字符串标签而不是数字标签。我还建议您标准化特征值,因为它们的范围相当不同。)
相关问题 更多 >
编程相关推荐