大师兄的数据分析学习笔记(十九):分类集成(一)

2022-07-29  本文已影响0人  superkmi

大师兄的数据分析学习笔记(十八):分类模型(四)
大师兄的数据分析学习笔记(二十):分类集成(二)

一、关于集成学习

方法 适合
熵增益决策树 适合离散值比较多的问题
CART决策树 适合连续值分类问题
KNN、支持向量机 适合标注在空间内隔离性好的情况

二、 强学习和弱和学习

  • 多项式复杂度:O(n^p)
  • 阶乘复杂度:O(n!)
  • 指数级复杂度: O(m^n)
  • ...
  • 强可学习:多项式学习算法的效果明显。
  • 弱科学系:多项式学习算法的效果不明显。

三、集成方法

1. 袋装法

四、随机森林

  • 树的数量:树的数量越多,考虑到的样本的可能情况越多,但也更容易过拟合。
  • 每棵树的特征数:如果少于50个特征,可以考虑采用全部特征;特征多时,可以随机选择一部分特征。
  • 每棵树的训练集怎么选:可以把子集数量定义为与树的数量一致,并进行放回采样,通过样本差获得树的差异性。
  • 每个决策树可以不使用全部特征。
  • 不需要剪枝,就可以有效避免过拟合。
>>>import os
>>>import pandas as pd
>>>import numpy as np
>>>from sklearn.model_selection import train_test_split
>>>from sklearn.metrics import  accuracy_score,recall_score,f1_score
>>>from sklearn.ensemble import RandomForestClassifier

>>>models = []
>>>models.append(("RandomForest",RandomForestClassifier(bootstrap=True)))

>>>df = pd.read_csv(os.path.join(".", "data", "WA_Fn-UseC_-HR-Employee-Attrition.csv"))
>>>X_tt,X_validation,Y_tt,Y_validation = train_test_split(df.JobLevel,df.JobSatisfaction,test_size=0.2)
>>>X_train,X_test,Y_train,Y_test = train_test_split(X_tt,Y_tt,test_size=0.25)

>>>for clf_name,clf in models:
>>>    clf.fit(np.array(X_train).reshape(-1,1),np.array(Y_train).reshape(-1,1))
>>>    xy_lst = [(X_train,Y_train),(X_validation,Y_validation),(X_test,Y_test)]
>>>    for i in range(len(xy_lst)):
>>>        X_part = xy_lst[i][0]
>>>        Y_part = xy_lst[i][1]
>>>        Y_pred = clf.predict(np.array(X_part).reshape(-1,1))
>>>        print(i)
>>>        print(clf_name,"-ACC",accuracy_score(Y_part,Y_pred))
>>>        print(clf_name,"-REC",recall_score(Y_part,Y_pred,average='macro'))
>>>        print(clf_name,"-F1",f1_score(Y_part,Y_pred,average='macro'))
>>>        print("="*40)
0
RandomForest -ACC 0.32653061224489793
RandomForest -REC 0.26488902756674626
RandomForest -F1 0.18037863737291104
========================================
1
RandomForest -ACC 0.2891156462585034
RandomForest -REC 0.23440860215053763
RandomForest -F1 0.16347594637223975
========================================
2
RandomForest -ACC 0.30612244897959184
RandomForest -REC 0.24200370076658734
RandomForest -F1 0.1696751689557445
========================================
上一篇 下一篇

猜你喜欢

热点阅读