何喆379
2022-02-03 21:18
采纳率: 100%
浏览 26

机器学习决策树鸢尾花数据集,绘制决策边界,出现相同代码相同数据多次运行,结果不一致的问题

练习机器学习中,采用决策树将鸢尾花的数据进行分类,并绘制决策边界,代码如下:

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
iris = datasets.load_iris()
x = iris.data[:,2:]
y = iris.target
from sklearn.tree import DecisionTreeClassifier
dt_clf = DecisionTreeClassifier(max_depth = 2,criterion = 'entropy')
dt_clf.fit(x,y)

def plot_decision_boundary(model,axis):
    x0,x1 = np.meshgrid(
        np.linspace(axis[0],axis[1],int((axis[1]-axis[0])*200)),
        np.linspace(axis[2],axis[3],int((axis[3]-axis[2])*200))
    )
    
    x_new = np.c_[x0.ravel(),x1.ravel()]
    y_predict = model.predict(x_new)
    zz = y_predict.reshape(x0.shape)
    
    from matplotlib.colors import ListedColormap
    custom_cmap = ListedColormap(['#EF9A9A','#FFF59D','#90CAF9'])
    plt.contourf(x0,x1,zz,cmap = custom_cmap)

plot_decision_boundary(dt_clf,axis= [0.5,7.5,0,3])
plt.scatter(x[y==0,0],x[y==0,1])
plt.scatter(x[y==1,0],x[y==1,1])
plt.scatter(x[y==2,0],x[y==2,1])
plt.show() # 这个结果有点不对 ,但我又不知道哪里搞错了

第一次运行出现了下图所示的分类结果:

img

第二次及以后运行时出现了下图的分类结果:

img

我想知道明明是相同的数据,相同的代码,只是运行先后顺序不同,为什么会出现上下两个图之间的完全不同的分类结果,并且出现哪种分类结果还有一定的随机性?我的代码里也没有随机数。虽然非参数学习对于数据依赖非常严重,但是我的数据也没有发生更改啊,很奇怪。

1条回答 默认 最新

相关推荐 更多相似问题