day06-决策树及随机森林



# coding=utf-8
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV

def dectree():
    """
    决策树
    :return:
    """

    # 水仙花数
    iris = load_iris()

    # 分割数据
    x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.25)

    # 决策树
    dec = DecisionTreeClassifier()

    dec.fit(x_train,y_train)

    print(x_train)

    print("决策树预测的准确率为:",dec.score(x_test,y_test))



    # 随机森林
    rf = RandomForestClassifier()

    # 网格验证找出最好的模型
    gc = GridSearchCV(rf,param_grid={"n_estimators":[1,3,5,7,9],"max_depth":[3,5,7,9,15]},cv=2)

    # 训练
    gc.fit(x_train,y_train)

    # 结果
    print("经过网格验证选择后的随机森林预测准确率为:",gc.score(x_test,y_test))
    print("最佳的随机森林参数为:",gc.best_params_)

    return None

if __name__ == '__main__':
    dectree()


结果为:


决策树预测的准确率为: 0.9473684210526315
经过网格验证选择后的随机森林预测准确率为: 0.9736842105263158
最佳的随机森林参数为: {'max_depth': 3, 'n_estimators': 3}


决策树中使用算法来计算各个特征值的信息熵,判断哪个特征值对结果的影响最大,将这个特征值移到树节点的前边,然后依次将特征值作为节点组成决策树。
而随机森林则是多个决策树,每个决策树有不同的结果,哪个结果多则预测的结果为那个。
随机森林优点比较明显,可以用于大数据量的预测,预测准确率高,且不需要进行数据降维,唯一不好的地方则是参数不好调,即树的数量以及树的深度。

posted @ 2021-01-14 19:03  Nevesettle  阅读(110)  评论(0编辑  收藏  举报