Python高级--决策树( 三 )


2)获取数据集
from sklearn.datasets import load_irisiris = load_iris()#获取前两个特征,画图观察各个模型的区别data = http://www.kingceram.com/post/iris.data[:,:2]# 特征target = iris.target# 目标值
3)绘出原始数据的图形
plt.scatter(data[:,0],data[:,1],c=target)

Python高级--决策树

文章插图
4)使用决策树算法() 1、获取模型并训练
dtree = DecisionTreeClassifier()dtree.fit(data,target)
2、将整个画布作为测试数据查看分类效果 构建测试数据
xmin = data[:,0].min() - 0.5xmax = data[:,0].max() + 0.5ymin = data[:,1].min() - 0.5ymax = data[:,1].max() + 0.5
# 取遍范围x = np.linspace(xmin,xmax,100)y = np.linspace(ymin,ymax,100)# 网格化处理x和y 让他们做交叉xx,yy = np.meshgrid(x,y)X_test = np.c_[xx.flatten(),yy.flatten()]# 得到画布上的每一个点
3、使用去预测
y_ = dtree.predict(X_test)
4、绘图
导入cmap制定显示颜色
from matplotlib.colors import ListedColormapcmap1 = ListedColormap(['r','g','b'])plt.scatter(X_test[:,0],X_test[:,1],c=y_)plt.scatter(data[:,0],data[:,1],c=target,cmap=cmap1)# 先画背景 后画点
默认情况下的效果
Python高级--决策树

文章插图
5、调整最大深度查看显示效果
:决策树 决策的次数
dtree = DecisionTreeClassifier(max_depth=1)
Python高级--决策树

文章插图
深度太小 容易欠拟合
dtree = DecisionTreeClassifier(max_depth=6)
Python高级--决策树

文章插图

Python高级--决策树

文章插图
深度太大 容易过拟合
5)使用KNN算法
knn容易过拟合
1、获取模型并训练
knn = KNeighborsClassifier()knn.fit(data,target)
2、模型预测并绘图
y_ = knn.predict(X_test)plt.scatter(X_test[:,0],X_test[:,1],c=y_)plt.scatter(data[:,0],data[:,1],c=target,cmap=cmap1)
Python高级--决策树

文章插图
6)逻辑斯蒂回归算法
* 逻辑回归容易欠拟合*
1、获取模型并训练
lgc = LogisticRegression()lgc.fit(data,target)
2、模型预测并绘图
y_ = lgc.predict(X_test)plt.scatter(X_test[:,0],X_test[:,1],c=y_)plt.scatter(data[:,0],data[:,1],c=target,cmap=cmap1)
Python高级--决策树

文章插图
7)三种分类模型总结
处理分类问题
有明确的业务逻辑(反映到图上 是 很规整的散点) 这个时候适合用决策树
knn(容易过拟合)和lgc(容易欠拟合)
能不用knn 尽量不用knn 速度太慢 内存消耗太大
六、决策树处理回归问题
回归很少用决策树
使用回归预测一个椭圆