【机器学习笔记】【决策树】【回归树】( 三 )


#在Python中一维数组不分行列,对于下面的y只能说是带了80个数据的对象y.shape
plt.figure()#将我们的x,y的数据传入,s是散点图中点的大小,设置边框的颜色是黑色(edgecolor="black"),设置点的颜色是暗橙色的(c="darkorange"),标签是data,也就是纵坐标轴的名字plt.scatter(X, y, s=20, edgecolor="black",c="darkorange", label="data")
#给我们的y数据加上噪声#为什么要加上噪声?#因为我们现实中真实的数据不可能都是符合我们上面的这么完全的sin函数的图像的,必然存在一些不符合情况的数据#加上噪声的方法就是给其中的某一些数据加上或者减去一些数据,从而让部分数据偏离原来的sin函数的位置#对y进行切片,按照步长5进行切片,每5个取一个数据,也就是取出来16个,每个数据都是间隔为5的#我们让这些数据随机加上rng.rand(16),也就是十六个取出来的数据加上十六个对应位置的随机数#为什么要用0.5去减去我们的随机数呢,因为我们的rand的取值是[0,1)数据,中值是0.5#使用0.5减去之后就让有的数据是负,有的数据是正,这样的取值范围就变成了[-0.5,0.5)#因为这个数很小,所以我们将这个数乘上3,将其变大一点y[::5] += 3 * (0.5 - rng.rand(16))y#np.random.rand(数组结构),生成随机数组的函数
plt.figure()plt.scatter(X, y, s=20, edgecolor="black",c="darkorange", label="data")
【【机器学习笔记】【决策树】【回归树】】了解ravel降维的用法
#了解降维函数ravel()的用法#ravel()将n维的数据降成n-1维,多次运行的话可以一直降到一维为止np.random.random((2,1))
np.random.random((2,1)).shape
np.random.random((2,1)).ravel()
np.random.random((2,1)).ravel().shape
3.创建回归模型
#这里我们建了两个不同的模型 。因为我们想查看在不同的拟合效果下,回归树是怎么表现的#最大深度小的话会限制模型对于训练集的拟合,剪枝越严重,可以防止过拟合regr_1 = DecisionTreeRegressor(max_depth=2)regr_2 = DecisionTreeRegressor(max_depth=5)regr_1.fit(X, y)regr_2.fit(X, y)
4.导入测试集
#导入测试集#np.arange是生成有序的数列,第一个点是起始点,第二个点是结束点,第三个点是步长,#np.arange(0.0, 5.0, 0.01),也就是从0.0开始每加上0.01取一个数据,一直到4.99为止#相当于是x轴上的无数个点#为了将测试集放入我们的回归树中,我们的数据至少是二维的,所以我们需要对我们arange生成的一维的数据进行增维#当然.reshape(-1,1)也可以增维#但是我们也可以使用下面的[:, np.newaxis]#np.newaxis就是用于升维的,如果是[:, np.newaxis],对于一维的数据,就会生成n行1列的二维数据集#如果是[ np.newaxis,:]就会生成1行n列的数据X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]X_test
X_test.shape
5.预测测试集的数据
#将测试集导入我们的模型中进行使用,这里我们用到了回归树的接口predict#predict也就是输入测试集之后,得到每个测试样本点的回归(或者分类的结果)#也就是输入x,他给你预测y#因为这里我们有两个模型所以需要做两次y_1 = regr_1.predict(X_test)y_2 = regr_2.predict(X_test)