【总结】pythonsklearn模型中random_state参数的意义⼀、前⾔
在学习机器学习的过程中,常常遇到random_state这个参数,并且好多时候都是 random_state=42,感觉挺有意思的,于是,百度⼀下,然后做⼀个总结。
作⽤:控制随机状态。
问题:为什么需要⽤到这样⼀个参数random_state(随机状态)?看完⽂章你就会知道了。
⼀句话概括:random_state是⼀个随机种⼦,是在任意带有随机性的类或函数⾥作为参数来控制随机模式。当random_state取某⼀个值时,也就确定了⼀种规则。
random_state可以⽤于很多函数,我⽐较熟悉的是⽤于以下三个地⽅:
1、训练集测试集的划分
2、构建决策树
3、构建随机森林
⼆:random_state的三种应⽤场所
2.1 划分训练集和测试集的类train_test_split
xtrain,xtest,ytrain,ytest = train_test_split(X,y,test_size=0.2,random_state=42)
随机数种⼦控制每次划分训练集和测试集的模式,其取值不变时划分得到的结果⼀模⼀样,其值改变时,划分得到的结果不同。若不设置此参数,则函数会⾃动选择⼀种随机模式,得到的结果也就不同。
2.2 构建决策树的函数
clf = tree.DecisionTreeClassifier(criterion="entropy",random_state=42,splitter="random")
其取值不变时,⽤相同的训练集建树得到的结果⼀模⼀样,对测试集的预测结果也是⼀样的;
其值改变时,得到的结果不同;
若不设置此参数,则函数会⾃动选择⼀种随机模式,每次得到的结果也就不同。
2.3 构建随机森林
clf = RandomForestClassifier(random_state=0)
其取值不变时,⽤相同的训练集建森林得到的结果⼀模⼀样,对测试集的预测结果也是⼀样的;
其值改变时,建森林得到的结果不同;
若不设置此参数,则函数会⾃动选择⼀种随机模式,每次得到的结果也就不同。
2.4 ⼩结
如果你希望结果可以重现,固定random_state是⾮常重要的。
对于随机森林这个模型,它本质上是随机的,设置不同的随机状态(或者不设置random_state参数)可以彻底改变构建的模型。
对于数据集的⽣成,它本质上也是随机的,设置不同的随机状态(或者不设置random_state参数)可以彻底改变⽣成的数据集。
对于数据集的拆分,它本质上也是随机的,设置不同的随机状态(或者不设置random_state参数)可以彻底改变拆分的结果。
固定random_state后,每次构建的模型是相同的、⽣成的数据集是相同的、每次的拆分结果也是相同的。
三、总结
random python对于那些本质上是随机的过程,我们有必要控制随机的状态,这样才能重复的展现相同的结果。如果,对随机状态不加控制,那么实验的结果就⽆法固定,⽽是随机的显现。
因为同⼀算法模型在不同的训练集和测试集的会得到不同的准确率,⽆法调参。所以在sklearn 中可以通过添加random_state,通过固定random_state的值,每次可以分割得到同样训练集和测试集。因此random_state参数主要是为了保证每次都分割⼀样的训练集和测试机,⼤⼩可以是任意⼀个整数,在调参缓解,只要保证其值⼀致即可。
所以,⾄于random_state=?随你喽
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论