在将支持向量机(SVM)分类器加载到预测分析的加载数据之前,您必须将完整的数据集分成一个训练集,测试集。
幸运的是,scikit-learn已经实现了一个函数,可以帮助您轻松地分割整个数据集。 train_test_split函数将一个数据集和一个百分比值作为输入。百分比值用于确定测试集的大小。该函数返回两个数据集:测试数据集(具有指定的大小)和训练数据集(使用其余数据)。
<! - 1 - >通常,可以将大约70-80%的数据用作训练集,并将剩余的数据用作测试集。但Iris数据集非常小(只有150个实例),因此您可以将90%的数据集用于训练模型,并使用另外10%的数据作为测试数据,以查看您的预测模型将如何执行。
键入以下代码拆分数据集: >>>> from sklearn import cross_validation >>> X_train,X_test,y_train,y_test = cross_validation。 train_test_split(iris.data,iris.target,test_size = 0。10,random_state = 111)第一行将交叉验证库导入到会话中。第二行从样本的10%创建测试集。
<! - 2 - >
x_train将包含135个观察值及其特征。 y_train将包含135个与135个观察值相同顺序的标签。
x_test将包含15个(或10%)观察值及其特征。y_test将包含15个标签,其顺序与15个观察值相同。
以下代码验证分割是您所期望的:
>>>> X_train。形状(135,4)>>> y_train。形状(135,)>>> X_test。形状(15,4)>>> y_test。形状(15,)
从输出可以看到,在训练集中有135个观察值,其中有4个特征和135个标签。该测试集有15个观察点,具有4个特征和15个标签。
预测分析领域的许多初学者忘记分割数据集 - 这给项目带来了严重的设计缺陷。如果全部150个实例作为训练数据加载到机器中,那么将不会留下用于测试模型的不可见数据。那么你不得不重新使用一些训练实例来测试预测模型。你会发现,在这种情况下,模型总是预测正确的类 - 因为你使用的是与训练模型相同的精确数据。模型之前已经看到了这种模式;只要重复看到的内容就没有问题了。一个工作的预测模型需要预测尚未发现的数据。
当有一个SVM分类器,一个训练数据集和一个测试数据集的实例时,就可以用训练数据训练模型了。在解释器中键入以下代码将完成: >>>> svmClassifier。 fit(X_train,y_train)这行代码创建一个工作模型来进行预测。具体来说,一个预测模型将预测什么类别的虹膜新的未标记的数据集属于。 svmClassifier实例将有几个方法可以调用来做各种事情。
例如,在调用fit方法之后,调用最有用的方法是预测方法。这就是您要提供新数据的方法;作为回报,它预测结果。