使用虹膜数据集:
import sklearn.datasets iris_dataset = sklearn.datasets.load_iris() X, y = iris_dataset['data'], iris_dataset['target']
数据分为训练集和测试集。要做到这一点,我们使用train_test_split效用函数来分割双方X和y(数据和目标矢量)用随机选择train_size=0.75(训练集包含数据的75%)。
训练数据集被输入到k最近邻分类器中。fit分类器的方法将使模型适合数据。
fromsklearn.cross_validationimport train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.75) fromsklearn.neighborsimport KNeighborsClassifier clf = KNeighborsClassifier(n_neighbors=3) clf.fit(X_train, y_train)
最终预测测试样品的质量:
clf.score(X_test, y_test) # Output: 0.94736842105263153
通过使用一对训练集和测试集,由于数据拆分的任意选择,我们可能会得到分类器质量的偏差估计。通过使用交叉验证,我们可以将分类器拟合到数据的不同训练/测试子集中,并对所有准确性结果进行平均。该函数cross_val_score使用交叉验证使分类器适合输入数据。它可以将要使用的不同分割数(折叠数)作为输入(在下面的示例中为5)。
fromsklearn.cross_validationimport cross_val_score scores = cross_val_score(clf, X, y, cv=5) print(scores) # Output: array([ 0.96666667, 0.96666667, 0.93333333, 0.96666667, 1. ]) print "Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() / 2) # Output: Accuracy: 0.97 (+/- 0.03)