python实现决策树与随机森林

 

数据来自于sklearn.datasets中的load_iris

模型为决策树

import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
import matplotlib as mpl

iris=load_iris()
print(iris.data.shape)
data=pd.DataFrame(iris.data,columns=iris.feature_names)  #pd.DataFrame(A,index='',columns='')
data['target']=iris.target
x=data.iloc[:,:-2]   #从pandas中的DataFrame中截取数据,需要用.iloc
y=data.iloc[:,-1:]
x_train,x_test,y_train,y_test=train_test_split(x,y,train_size=0.75,random_state=40)
tree_clf=DecisionTreeClassifier(max_depth=5,criterion='entropy')
tree_clf.fit(x_train,y_train)
y_predict=tree_clf.predict(x_test)
print('acc',accuracy_score(y_test,y_predict))

模型为随机森林

import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split

iris=load_iris()
data=pd.DataFrame(iris.data,columns=iris.feature_names)
data['target']=iris.target

x=data.iloc[:,:-1]
y=data.iloc[:,-1:]

x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.75,random_state=40)
random_forest=RandomForestClassifier(n_estimators=20,max_leaf_nodes=16,n_jobs=20)   #max_leaf_nodes 最大叶节点数,与max_depth选一即可
random_forest.fit(x_train,y_train)
y_predict=random_forest.predict(x_test)
p=accuracy_score(y_test,y_predict)
print(p)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
决策树是一种以树状结构表示分类结果的算法,每个决策点都有一个测试函数来进行分类,并且决策树可以用于分类和回归任务。随机森林是由多棵决策树组成的集成学习算法。与传统的决策树不同的是,随机森林中的决策树是随机生成的。这种随机性体现在两个方面:数据随机选择和特征的随机选择。 在随机森林中,数据随机选择是通过利用bootstrap有放回采样来实现的。这样做的目的是使一些决策树无法选择到异常样本点,从而提高整体模型的鲁棒性。而特征的随机选择则是为了剔除可能会影响决策树性能的特征,避免过拟合现象的发生。这种随机抽样和随机抽取特征的策略可以很好地防止过拟合现象,并且可以克服高维特征问题。 在Python中,我们可以使用scikit-learn库来实现随机森林算法。首先,我们需要准备训练集数据,确保每棵树都能够完整生长,不进行剪枝。然后,我们可以使用随机森林模型对新的数据进行分类。最终的分类结果是由每棵决策树投票产生的,选择占比最大的分类结果作为最终结果。 下面是一个使用Python的示例代码,展示了如何使用随机森林算法进行分类: ```python from sklearn.ensemble import RandomForestClassifier # 准备训练集数据 X_train = ... y_train = ... # 创建随机森林模型 rf = RandomForestClassifier() # 训练模型 rf.fit(X_train, y_train) # 使用模型进行预测 X_test = ... y_pred = rf.predict(X_test) ``` 以上是一个基本的随机森林分类的示例,你可以根据自己的数据和需求进行相应的调参和优化。希望这个回答对你有帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值