参数
class sklearn.tree.DecisionTreeRegressor (criterion=’mse’,
splitter=’best’, max_depth=None,min_samples_split=2,
min_samples_leaf=1, min_weight_fraction_leaf=0.0,
max_features=None,random_state=None, max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None, presort=False)
交叉验证
from sklearn.datasets import load_boston
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeRegressor
boston = load_boston()
regressor = DecisionTreeRegressor(random_state=0)
#交叉验证
print(cross_val_score(regressor,boston.data,boston.target,cv=10,
#scoring = "neg_mean_squared_error"
#默认返回R平方
))
一维回归的图像绘制
import numpy as np
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt
#创建一条含有噪声的正弦曲线
rng = np.random.RandomState(1)#生成随机数种子
X = np.sort(5 * rng.rand(80,1),axis=1)#生成0~5之间随机数,80行1列的矩阵,升序由axis=0控制
y = np.sin(X).ravel()#生成正弦曲线,使用ravel降维,变成一维
y[::5] += 3 *(0.5 - rng.rand(16))#给某些数据加噪声
#y[::5]切片,步长为5,取80/5=16个,切片加上16个 3*(-0.5~0.5)的值(即为噪声)
plt.figure()
plt.scatter(X,y,s=20)
#print(plt.show()) #画出有噪音的散点图
#实例化,训练模型
regr_1 = DecisionTreeRegressor(max_depth=2)
regr_2 = DecisionTreeRegressor(max_depth=5)
regr_1=regr_1.fit(X,y)
regr_2=regr_2.fit(X,y)
#导入测试集,预测结果
X_test = np.arange(0.0,5.0,0.01)[:,np.newaxis]#生成测试集
#np.arrange(开始点,结束点,步长) 生成有序数组的函数
#把测试集放到回归树里面必须是2维,所以要增维,l[:,np.newaxis]把l增维,l[np.newaxis,:]把l降维
#print(X_test.shape)
y_1 = regr_1.predict(X_test)#预测结果
y_2 = regr_2.predict(X_test)
#print(y_1,y_2)
#画图
plt.figure()#生成画布
#scatter画散点图
plt.scatter(X, y, s=20, edgecolor="black",c="darkorange", label="data")
#s:尺寸,edgecolor:边框颜色,c:点的颜色,lable:数据
plt.plot(X_test, y_1, color="cornflowerblue",label="max_depth=2", linewidth=2)#plot画线
plt.plot(X_test, y_2, color="yellowgreen", label="max_depth=5", linewidth=2)
plt.xlabel("data")#x,y轴的名字
plt.ylabel("target")
plt.title("Decision Tree Regression")#图的名称
plt.legend()
print(plt.show()) #显示图