老师参与

为什么Spyder上runfile与run cell得到的结果不同

澄碧钓徒 发表于2019年04月13日
<p><code class="brush:python;toolbar:false" >from&nbsp;sklearn.ensemble&nbsp;import&nbsp;RandomForestClassifier from&nbsp;sklearn.model_selection&nbsp;import&nbsp;train_test_split from&nbsp;sklearn.metrics&nbsp;import&nbsp;accuracy_score from&nbsp;sklearn.datasets&nbsp;import&nbsp;load_iris iris=load_iris() x=iris.data[:,:] y=iris.target x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=12) clf=RandomForestClassifier() clf.fit(x_train,y_train) rtc=clf.predict(x_test) print(accuracy_score(y_test,rtc))</code></p><p><img src="https://nos.netease.com/edu-image/6e93c9ad9fff4550a2ea22a6c7f6bac7.JPG" /></p><p>像以上RFC算法为什么run cell跟run整个文件结果有0.03左右的偏差?</p><p><br /></p>
2 回复

    1楼

  • 王恺-南开大学 发表于2019年04月13日
    1 | 0 | 举报
    <p>这个问题和运行方式无关,对脚本文件重复运行多次也会看到结果不一致的情况,这主要是由于随机森林中有随机选择数据的过程。</p>
    王恺-南开大学 发表于2019年04月13日
    添加评论
  • 2楼

  • 王恺-南开大学 发表于2019年04月13日
    1 | 0 | 举报
    <p>从网上找了一段关于随机森林的描述,可以看到训练时有随机采样和随机选择特征的过程,这些随机的操作会导致同一数据集上得到的结果却不同。</p><p><br ></p><p>输入为样本集D={(x,y1),(x2,y2),...(xm,ym)},弱分类器迭代次数T。</p><p>    输出为最终的强分类器f(x)</p><p>    1)对于t=1,2...,T:</p><p>      a)对训练集进行第t次随机采样,共采集m次,得到包含m个样本的采样集Dt</p><p>      b)用采样集Dt训练第t个决策树模型Gt(x),在训练决策树模型的节点的时候, 在节点上所有的样本特征中选择一部分样本特征, 在这些随机选择的部分样本特征中选择一个最优的特征来做决策树的左右子树划分</p><p>    2) 如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。</p><p><br ></p>
    王恺-南开大学 发表于2019年04月13日
    添加评论