Python高级--决策树( 四 )


在-np.pi到np.pi的范围 中 产生200个点
生成正弦值和余弦值
然后根据正弦值和余弦值产生目标值
1)导入模型
from sklearn.tree import DecisionTreeRegressor
2)获取数据
数据集:从-π 到π 取200个值
X_train = np.linspace(-np.pi,np.pi,200)X_train
结果集:从s里取出第一个,再从c中取出一个,两个一起生成一个点的位置 。
s = np.sin(X_train)c = np.cos(X_train)target = np.c_[s,c]
3)将所有的点画到画布上
plt.figure(figsize=(5,5))plt.scatter(target[:,0],target[:,1])

Python高级--决策树

文章插图
4)撒盐操作
让圆上的40个点不规则的显示在圆的周围
noise = np.random.randn(40,2)/10# 40行2列target[::5] += noise#每隔5个加一个噪声
将撒盐后的图形
plt.figure(figsize=(5,5))plt.scatter(target[:,0],target[:,1])
Python高级--决策树

文章插图
5)创建决策树回归模型并训练
dtree = DecisionTreeRegressor()dtree.fit(X_train.reshape(-1,1),target)
6)产生测试数据
X_test = np.linspace(-np.pi,np.pi,180)
7)对测试数据预测
y_ = dtree.predict(X_test.reshape(-1,1))
8)绘制预测后的值的图形
plt.figure(figsize=(5,5))plt.scatter(y_[:,0],y_[:,1])
Python高级--决策树

文章插图
9)比较不同深度的拟合情况
深度小 欠拟合 深度大 过拟合
dtree = DecisionTreeRegressor(max_depth=7)# 深度小 欠拟合深度大 过拟合dtree.fit(X_train.reshape(-1,1),target)y_ = dtree.predict(X_test.reshape(-1,1))plt.figure(figsize=(5,5))plt.scatter(y_[:,0],y_[:,1])# 回归很少用决策树
【Python高级--决策树】
Python高级--决策树

文章插图