【python】案例实战:使用sklearn构造决策树模型

import matplotlib.pyplot as plt
import pandas as pd

from sklearn.datasets.california_housing import fetch_california_housing
housing = fetch_california_housing()
print(housing.DESCR)

print(housing.data.shape)
print(housing.data[0])
from sklearn import tree
dtr = tree.DecisionTreeRegressor(max_depth = 2)
dtr.fit(housing.data[:, [6, 7]], housing.target)#。fit相当于建造这样一个dtr的模型。。model.fit(x,y).

#要可视化显示 首先需要安装 graphviz   http://www.graphviz.org/Download..php
dot_data = \
    tree.export_graphviz(
        dtr,
        out_file = None,
        feature_names = housing.feature_names[6:8],
        filled = True,
        impurity = False,
        rounded = True
    )
#pip install pydotplus
import pydotplus
graph = pydotplus.graph_from_dot_data(dot_data)
graph.get_nodes()[7].set_fillcolor("#FFF2DD")
from IPython.display import Image
#Image(graph.create_png())##报错,未解决。。。
#graph.write_png("dtr_white_background.png")

from sklearn.model_selection import train_test_split#分出训练集和验证集
data_train,data_test,target_train,target_test=\
train_test_split(housing.data,housing.target,test_size=0.1,random_state=42)#random_state随机数的种子。
dtr = tree.DecisionTreeRegressor(random_state=42)##①决策树回归
dtr.fit(data_train,target_train)#model.fit??
dtr.score(data_test,target_test)#score??

from sklearn.ensemble import RandomForestRegressor
rfr = RandomForestRegressor( random_state = 42)#②RandomForestRegressor随机森林算法
rfr.fit(data_train, target_train)
rfr.score(data_test, target_test)

from sklearn.grid_search import GridSearchCV#GridSearchCV,网格搜索,它存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数。但是这个方法适合于小数据集,一旦数据的量级上去了,很难得出结果。
tree_param_grid = { 'min_samples_split': list((3,6,9)),'n_estimators':list((10,50,100))}
grid = GridSearchCV(RandomForestRegressor(),param_grid=tree_param_grid, cv=5)#??
grid.fit(data_train, target_train)
print(grid.grid_scores_, grid.best_params_, grid.best_score_)

rfr = RandomForestRegressor( min_samples_split=3,n_estimators = 100,random_state = 42)
rfr.fit(data_train, target_train)
rfr.score(data_test, target_test)
pd.Series(rfr.feature_importances_, index = housing.feature_names).sort_values(ascending = False)




一、参数

常用的就是max_depth(预剪枝的核心,需要遍历一些值);min_samples_split,限制过拟合的。

二、可视化

,,,

//有问题先去看sklearn的API文档。

 

三、参数选择

交叉验证:

train训练集是用来建模的,test验证集是用来验证模型的。交叉验证是用来参数选择的。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值