python导入鸢尾花数据集_用Python进行K次交叉验证,探索鸢尾花数据集(含代码)...

K次交叉验证,将训练集朋分成K个子样本,一个零丁的子样本被保存作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合体例,最终获得一个单一估测。这个体例的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次。

设置Jupyter notebook展示图片%matplotlib notebook%matplotlib inline

注:如果想展示动态图,选择第一种;如果想展示静态图,用第二种。

导入Numpy, Matplotlib pyplot和KNNimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom sklearn.neighbors import KNeighborsClassifier

加载鸢尾花数据集from sklearn import datasetsiris = datasets.load_iris()

设置训练数据和目标值X = iris.datay = iris.target

朋分训练和测试数据from sklearn.model_selection import train_test_split, cross_val_scoreX_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

选择前两个变量以简化数据X = X[:, :2]

设置模型变量max_neighbours = 100accuracy = np.zeros((max_neighbours-1, 3))for number_neighbors in range(1,max_neighbours): knn = KNeighborsClassifier(n_neighbors = number_neighbors) knn.fit(X_train, y_train); # K次交叉验证 scores = cross_val_score(knn, # 模型 X, y, cv=10 # 10次交叉验证 ) # 保存准确率数据 accuracy[number_neighbors-1, 0] = number_neighbors accuracy[number_neighbors-1, 1] = scores.mean() accuracy[number_neighbors-1, 2] = knn.score(X_test, y_test)

可视化模型准确率结果plt.figure()plt.plot(accuracy[:,0], accuracy[:,1]) plt.plot(accuracy[:,0], accuracy[:,2])

用Python进行K次交叉验证,探索鸢尾花数据集(含代码)-1.jpg (30.1 KB, 下载次数: 0)

2018-10-5 04:55 上传

蓝色:K次交叉验证下的准确率;黄线:训练/测试数据朋分训练的准确率

def plot_boundary(knn): # 找到每个特征的最大、最小值 x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 # 建立网格矩阵 h=(x_max-x_min)/500 xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) xx_yy_grid = np.c_[xx.ravel(), yy.ravel()] # 预测每个网格值得结果 Z = knn.predict(xx_yy_grid) # 重塑预测值结果,便利绘图 Z = Z.reshape(xx.shape) # 绘制决策鸿沟 plt.figure() plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Set3) # 绘制训练点 plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Set1, edgecolor='k', s=100) plt.xlim(xx.min(), xx.max()) plt.ylim(yy.min(), yy.max()) plt.show()

N=10情况下,分类可视化:knn = KNeighborsClassifier(n_neighbors = 10)knn.fit(X, y);plot_boundary(knn)

用Python进行K次交叉验证,探索鸢尾花数据集(含代码)-2.jpg (41.03 KB, 下载次数: 0)

2018-10-5 04:55 上传

N = 10

N=70情况下,分类可视化:knn = KNeighborsClassifier(n_neighbors = 70)knn.fit(X, y);plot_boundary(knn);

用Python进行K次交叉验证,探索鸢尾花数据集(含代码)-3.jpg (39.93 KB, 下载次数: 0)

2018-10-5 04:55 上传

N = 70

K次交叉验证训练准确性看起来更高一些。

更多内容回复查看:

游客,如果您要查看本帖隐藏内容请回复

你可能感兴趣的:(python导入鸢尾花数据集)