及时行乐|原理+代码|深入浅出Python随机森林预测实战( 三 )
对错误和离群点更加鲁棒性
决策树容易过度拟合的问题会随着森林的规模而削弱
大数据情况下速度快(分布式) , 性能好
Python实战数据探索本次实战目标为演示随机森林的用法和调优方法 。 因为集成学习与神经网络一样 , 都属于解释性较差的黑盒模型 , 所以我们无需过分探究数据集中每个变量的具体含义 , 只需关注最后一个变量broadband即可 , 争取通过如年龄 , 使用时长 , 支付情况以及流量和通话情况等变量对宽带客户是否会续费做出一个较准确的预测 。
importpandasaspdimportnumpyasnpdf=pd.read_csv('broadband.csv')#宽带客户数据df.head;df.info
fromcollectionsimportCounterprint('Broadband:',Counter(df['broadband']))##Broadband:Counter({0:908,1:206})比较不平衡 。 ##根据原理部分 , 可知随机森林是处理数据不平衡问题的利器接着拆分测试集与训练集 , 客户id没有用 , 故丢弃cust_id,
y=df['broadband']X=df.iloc[:,1:-1]fromsklearn.model_selectionimporttrain_test_splitX_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.4,random_state=12345)决策树建模我们先进行完整的决策树建模来和随机森林进行对比
importsklearn.treeastree#直接使用交叉网格搜索来优化决策树模型 , 边训练边优化fromsklearn.model_selectionimportGridSearchCV#网格搜索的参数:正常决策树建模中的参数-评估指标 , 树的深度 , ##最小拆分的叶子样本数与树的深度param_grid={'criterion':['entropy','gini'],'max_depth':[2,3,4,5,6,7,8],'min_samples_split':[4,8,12,16,20,24,28]}#通常来说 , 十几层的树已经是比较深了clf=tree.DecisionTreeClassifier#定义一棵树clfcv=GridSearchCV(estimator=clf,param_grid=param_grid,scoring='roc_auc',cv=4)#传入模型 , 网格搜索的参数 , 评估指标 , cv交叉验证的次数##这里也只是定义 , 还没有开始训练模型clfcv.fit(X=X_train,y=y_train)#使用模型来对测试集进行预测test_est=clfcv.predict(X_test)#模型评估importsklearn.metricsasmetricsprint("决策树准确度:")print(metrics.classification_report(y_test,test_est))#该矩阵表格其实作用不大print("决策树AUC:")fpr_test,tpr_test,th_test=metrics.roc_curve(y_test,test_est)print('AUC=%.4f'%metrics.auc(fpr_test,tpr_test))AUC大于0.5是最基本的要求 , 可见模型精度还是比较糟糕的 , 决策树的调优技巧就不再过多展开 , 我们将在随机森林调优部分展示
推荐阅读
- 轻拔琴弦|Reactor如何规定,混淆保护需正确命名!看.NET代码保护工具.NET
- 产业气象站|还让我手动写个HTTP协议代码,三次握手和四次挥手说完了
- 铭成输送带专家|输送带的工作原理
- 路飞写代码|新机仍是4G,诺基亚携新机将于8月14日中国首发!明明拥有5G技术
- 米粒创意|五大代码异味:你需要提高警惕了
- 程序员|程序员遭辞退后,却被前领导命令回去讲代码,如果是你你会怎么做?
- 华为海思|最大范围源代码泄露!包括华为海思、微软、高通,危及50多家公司
- 路飞写代码|华为需支付18亿美元追补款,高通突然宣布!已与华为达成专利和解
- 华为海思|突发!华为海思源代码泄露!
- 科邦实验室|原子荧光光谱仪的构造原理