gpt4 book ai didi

python - random_state 在 train_test_split 和分类器中的作用

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:15 28 4
gpt4 key购买 nike

基于这个答案:Random state (Pseudo-random number)in Scikit learn ,如果我使用与 random_state 相同的整数(比如 42),那么每次它进行训练测试拆分时,它应该给出相同的拆分(即每次运行期间训练中的相同数据实例,并且相同用于测试)

但是,

  1. for test_size in test_sizes:
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=test_size, random_state=42)
    clf = SVC(C=penalty, probability=False)

    假设我有这样一段代码。在这种情况下,我在每个循环中更改 test_size。它将如何影响 random_state 的作用?它会随机播放所有内容还是尽可能多地保持完整的行并根据测试大小将几行从训练转移到测试(反之亦然)?

  2. 此外,random_state 是一些分类器的参数,例如 sklearn.svm.SVCsklearn.tree.DecisionTreeClassifier。我有这样的代码:

    clf = tree.DecisionTreeClassifier(random_state=0)
    scores = cross_validate(clf, X_train, y_train, cv=cv)
    cross_val_test_score = round(scores['test_score'].mean(), prec)
    clf.fit(X_train, y_train)

    random_state 在这里究竟做了什么? 因为它是在定义分类器时使用的。它还没有提供数据。我从 http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html 得到以下信息:

If int, random_state is the seed used by the random number generator; If RandomState instance, random_state is the random number generator; If None, the random number generator is the RandomState instance used by np.random.

  1. 假设以下行针对多个测试大小中的每一个执行多次:

    clf = tree.DecisionTreeClassifier(random_state=0)

    如果我保留 random_state=int(test_size*100),这是否意味着对于每个测试大小,结果都会相同? (对于不同的测试大小,它们会有所不同吗?)

    (这里,tree.DecisionTreeClassifier 可以替换为其他也使用 random_state 的分类器,例如 sklearn.svm.SVC。我假设所有分类器都以类似的方式使用 random_state?)

最佳答案

1: 由于您正在更改测试大小,因此随机状态不会影响测试大小之间的选定行,并且无论如何这都不一定是所需的行为,因为您只是想尝试根据不同的样本量获得分数。这将为您做的,是允许您比较使用输入数据的模型,按相同的随机状态划分。从一个循环运行到下一个循环,测试集将完全相同。允许您正确比较相同样本的模型性能。

2:对于决策树分类器和许多其他模型,存在随机设置的初始化参数。这里的随机状态确保这些参数从一次运行到下一次运行完全相同,从而创建可重现的行为。

3:如果测试大小不同,并且将其乘以 100,则将为每个测试集创建不同的随机状态。但是从一个完整的运行到下一个完整运行,它将产生可重现的行为。您可以在那里轻松设置静态值。

并非所有模型都以相同的方式使用随机状态,因为每个模型都有不同的随机设置参数。对于 RandomForest,它正在选择随机特征。对于神经网络,它正在初始化随机权重……等等。

关于python - random_state 在 train_test_split 和分类器中的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49779032/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com