import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn import tree # 生成所有测试样本点 def make_meshgrid(x, y, h=.02): x_min, x_max = x.min() - 1, x.max() + 1 y_min, y_max = y.min() - 1, y.max() + 1 xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) return xx, yy # 对测试样本进行预测,并显示 def plot_test_results(ax, clf, xx, yy, **params): Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape) ax.contourf(xx, yy, Z, **params) # 载入iris数据集(只使用前面连个特征) iris = datasets.load_iris() X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size = 0.20,random_state = 20) # 创建并训练决策树 clf = tree.DecisionTreeClassifier() # 决策树分类器 clf = clf.fit(X_train,y_train) # 生成所有测试样本点 plt.figure(dpi=200) # feature_names=iris.feature_names设置决策树中显示的特征名称 tree.plot_tree(clf,feature_names=iris.feature_names,class_names=iris.target_names) # 显示测试样本的分类结果 title = ('DecisionTreeClassifier') fig, ax = plt.subplots(figsize = (5, 5)) plt.subplots_adjust(wspace=0.4, hspace=0.4) plot_test_results(ax, clf, xx, yy, cmap=plt.cm.coolwarm, alpha=0.8) # 显示训练样本 ax.scatter(X0, X1, c=y, cmap=plt.cm.coolwarm, s=20, edgecolors='k') ax.set_xlim(xx.min(), xx.max()) ax.set_ylim(yy.min(), yy.max()) ax.set_xlabel('x1') ax.set_ylabel('x2') ax.set_xticks(()) ax.set_yticks(()) ax.set_title(title) plt.show()
时间: 2023-11-27 08:04:29 浏览: 101
这是一个使用决策树分类器对鸢尾花数据集进行训练和预测的Python代码。具体实现过程如下:
1.首先通过sklearn库中的datasets模块加载鸢尾花数据集,并使用train_test_split函数将数据集划分为训练集和测试集。
2.创建一个决策树分类器,并将其与训练集进行拟合。
3.使用plot_tree函数可视化生成的决策树,其中feature_names参数设置特征名称,class_names参数表示分类标签的名称。
4.使用make_meshgrid函数生成测试样本点的网格,并使用plot_test_results函数对测试样本进行预测,并将分类结果可视化显示在网格上。
5.最后使用scatter函数将训练样本显示在图像上,并设置相关的标题、坐标轴和刻度等属性。
该代码可以帮助我们更好地理解决策树分类器的工作原理,并对其在实际应用中的表现有更深入的了解。
相关问题
import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap from sklearn.neighbors import KNeighborsClassifier from sklearn.datasets import load_iris iris=load_iris() X=iris.data[:,:2] Y=iris.target print(iris.feature_names) cmap_light=ListedColormap(['#FFAAAA','#AAFFAA','#AAAAFF']) cmap_bold=ListedColormap(['#FF0000','#00FF00','#0000FF']) clf=KNeighborsClassifier(n_neighbors=10,weights='uniform') clf.fit(X,Y) #画出决策边界 x_min,x_max=X[:,0].min()-1,X[:,0].max()+1 y_min,y_max=X[:,1].min()-1,X[:,1].max()+1 xx,yy=np.meshgrid(np.arange(x_min,x_max,0.02), np.arange(y_min,y_max,0.02)) Z=clf.predict(np.c_[xx.ravel(),yy.ravel()]) reshape(xx.shape) plt.figure() plt.pcolormesh(xx,yy,Z,cmap=cmap_light) #绘制预测结果图 plt.scatter(X[:,0],X[:,1],c=Y,cmap=cmap_bold) plt.xlim(xx,min(),xx.max()) plt.ylim(yy.min(),yy.max()) plt.title('3_Class(k=10,weights=uniform)') plt.show()
这段代码的作用是使用K近邻算法对鸢尾花数据集进行分类,并绘制出分类的决策边界图。具体来说,代码首先加载鸢尾花数据集并提取其中的前两个特征作为模型输入,然后使用KNeighborsClassifier类创建一个K近邻分类器,并使用fit方法拟合数据集。接着,代码使用meshgrid函数生成一组网格点,并将其作为输入数据进行分类预测,最后将分类结果绘制成彩色的决策边界图。同时,代码还会将数据集中的样本点用散点图表示出来。
运行这段代码import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier # 加载鸢尾花数据集 iris = load_iris() X = iris.data[:, :2] # 只使用前两个特征 y = iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.3, random_state=42) # 训练KNN模型 knn = KNeighborsClassifier(n_neighbors=5) knn.fit(X_train, y_train) # 可视化训练集和测试集 plt.figure(figsize=(10, 6)) plt.scatter(X_train[:, ], X_train[:, 1], c=y_train, cmap='viridis', label='Train') plt.scatter(X_test[:, ], X_test[:, 1], c=y_test, cmap='viridis', marker='x', label='Test') plt.xlabel('Sepal length') plt.ylabel('Sepal width') plt.legend() plt.show() # 可视化KNN分类结果 plt.figure(figsize=(10, 6)) h = .02 # 网格步长 x_min, x_max = X[:, ].min() - .5, X[:, ].max() + .5 y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5 xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) Z = knn.predict(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape) plt.contourf(xx, yy, Z, cmap='viridis', alpha=.5) plt.scatter(X_train[:, ], X_train[:, 1], c=y_train, cmap='viridis', label='Train') plt.scatter(X_test[:, ], X_test[:, 1], c=y_test, cmap='viridis', marker='x', label='Test') plt.xlabel('Sepal length') plt.ylabel('Sepal width') plt.legend() plt.show()
这段代码是使用 sklearn 库中的 KNN 算法对鸢尾花数据集进行分类,并将训练集和测试集的结果进行可视化展示。
首先,加载鸢尾花数据集,并只使用前两个特征进行分类。然后,将数据集划分为训练集和测试集,其中测试集占总数据集的 30%。
接下来,使用 KNN 算法对训练集进行拟合,并可视化训练集和测试集的散点图,其中样本点的颜色表示其所属的类别。
最后,使用 KNN 算法对整个特征空间进行分类,并用等高线图展示分类结果,同时也将训练集和测试集的散点图进行可视化展示。
阅读全文