【发布时间】:2020-02-03 02:37:00
【问题描述】:
所以,我一直在对一组数据使用 KNN,在 train_test_split 阶段使用 random_state = 4。尽管使用了随机状态,但每次输出的准确率、分类报告、预测等都是不同的。想知道为什么会这样吗?
这是数据的头部:(根据 all_time_runs 和 order 预测位置)
order position all_time_runs
0 10 NO BAT 1304
1 2 CAN BAT 7396
2 3 NO BAT 6938
3 6 CAN BAT 4903
4 6 CAN BAT 3761
这是分类和预测的代码:
#splitting data into features and target
X = posdf.drop('position',axis=1)
y = posdf['position']
knn = KNeighborsClassifier(n_neighbors = 5)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 42)
#fitting the KNN model
knn.fit(X_train, y_train)
#predicting with the model
prediction = knn.predict(X_test)
#knn score
score = knn.score(X_test, y_test)
【问题讨论】:
-
train_test_split()函数的另一个参数默认为shuffle=True。用于在拆分之前是否对数据进行洗牌。在许多训练函数中总是建议对数据进行洗牌。但是,如果您想得出相同的结果,则需要在该函数中提供shuffle=False。 -
那么在这种情况下,如果它不是每次都产生相同的结果,那么 random_state 的目的是什么?如果我在不改变随机播放的情况下使用 random_state = None 会对我的输出产生什么影响?
-
此外,即使我将 shuffle = False,它仍然会给我不同的结果。迷路了……
标签: python random scikit-learn state