【发布时间】:2018-09-21 13:44:31
【问题描述】:
基于这个答案:Random state (Pseudo-random number)in Scikit learn,如果我使用与random_state 相同的整数(比如 42),那么每次进行训练测试拆分时,它应该给出相同的拆分(即训练中的相同数据实例在每次运行期间,测试相同)
但是,
-
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的作用?它会打乱所有内容还是保持尽可能多的行完整,并根据测试大小将几行从训练转移到测试(反之亦然)? -
另外,
random_state是一些分类器的参数,例如sklearn.svm.SVC和sklearn.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 得到以下信息:
如果是int,则random_state是随机数生成器使用的种子; 如果是 RandomState 实例,则 random_state 是随机数生成器; 如果没有,随机数生成器是使用的 RandomState 实例 通过 np.random。
-
假设以下行针对多个测试大小中的每一个执行多次:
clf = tree.DecisionTreeClassifier(random_state=0)如果我保留
random_state=int(test_size*100),这是否意味着对于每个测试大小,结果都会相同? (对于不同的测试规模,它们会有所不同?)(这里,
tree.DecisionTreeClassifier可以替换为也使用random_state的其他分类器,例如sklearn.svm.SVC。我假设所有分类器都以类似的方式使用random_state?)
【问题讨论】:
-
2.
DecisionTreeClassifier中的random_state控制(至少)特征排列的顺序,因此可以影响选择要拆分的特征。 Here 是一个不错的答案,其中包含有关其他分类器的一些附加信息。
标签: python scikit-learn