【发布时间】:2018-09-07 08:48:51
【问题描述】:
在测试我的线性回归模型时,我发现更改train_test_split 中的random_state 参数会改变模型的准确性。
详细来说,我的火车测试拆分如下:
boston_data = load_boston()
X = pd.DataFrame(boston_data.data, columns=boston_data.feature_names)
y = pd.DataFrame(boston_data.target, columns=['MEDV'])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
而我的模型如下:
steps = [
('regr', Lasso())
]
pipeline = Pipeline(steps)
parameters = {
'regr__alpha': np.logspace(-4, -0.5, 40)
}
grid = GridSearchCV(pipeline, param_grid=parameters, cv=10, n_jobs=-1)
grid.fit(X_train, y_train)
grid.score(X_test, y_test)
现在,例如,对于当前场景(random_state = 42),测试分数为 0.725。但是,如果我将其更改为 43,则测试分数会下降到 0.7。
我知道random_state 表示测试和训练集中的数据集。话虽如此,我想知道,是否有办法获得稳定的结果?
谢谢!
【问题讨论】:
-
我不明白 - 如果你不改变
random_state- 它会给你稳定的结果不是吗? -
嗨@MaxU,再次感谢您的回答! :) 但是,我问这个问题的原因是:坚持哪个随机状态?以及如何确定我的实际模型精度是多少,当它仅通过更改测试集而不断变化时?
-
我认为改变测试集是正常的......除非你有准确的
1.0,这是因为data leakage而发生的 - 你绝对不想要这种情况...... -
感谢您的信息!
标签: python scikit-learn cross-validation train-test-split