机器学习模型中为何设置不同的random_state值?
为什么拆分数据集和模型的random_state可以设不同值?
这两个random_state控制的是完全独立的随机流程,根本不需要设置成相同数值,具体原因如下:
- 拆分数据集时的
random_state=1:只负责控制train_test_split的随机划分逻辑,确保每次运行代码时,训练集和验证集的内容完全一致,保证后续模型训练的输入是固定的。 - 模型(RandomForestClassifier)的
random_state=0:控制的是模型内部的随机操作,比如随机森林里每棵决策树的特征选择、样本采样等,确保每次训练同一个模型时,模型的初始化和训练过程完全可复现。
这两个随机过程互不影响,设置不同的数值只是为了明确区分两个独立的随机环节而已。哪怕你把两个都设成1或者都设成0,也不会有问题——只要各自固定数值,就能分别保证数据拆分和模型训练的可重复性。
附原示例代码:
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier data = pd.read_csv('../input/fifa-2018-match-statistics/FIFA 2018 Statistics.csv') y = (data['Man of the Match'] == "Yes") # Convert from string "Yes"/"No" to binary feature_names = [i for i in data.columns if data[i].dtype in [np.int64]] X = data[feature_names] train_X, val_X, train_y, val_y = train_test_split(X, y, random_state=1) my_model = RandomForestClassifier(n_estimators=100, random_state=0).fit(train_X, train_y)
内容的提问来源于stack exchange,提问作者ThilotoSanchez
相关产品推荐
相关产品推荐

