train_test_split random_state不起作用;每次都产生不同的输出

问题描述 投票:0回答:1

因此,我一直在对一组数据使用KNN,在train_test_split阶段的random_state = 4。尽管使用了随机状态,但准确性,分类报告,预测等的输出每次都不同。想知道为什么会这样吗?

这里是数据的开头:(根据all_time_runs和顺序预测位置)

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)
python random state
1个回答
0
投票

尽管train_test_split有一个与之相关的随机因素,必须解决它以避免产生随机结果,这不是您应该解决的唯一因素。

KNN是一个模型,它接受测试集的每一行,找到最接近的k训练集向量,并根据多数决定对它进行分类,即使是平局,该决定也是随机的。您需要set.seed(x),以确保该方法是可复制的。

Documentation状态:

基于邻居的分类是基于实例的学习或非一般性学习的一种:它不尝试构建一般的内部模型,而只是存储训练数据的实例。分类是通过每个点的最近邻居的简单多数投票计算得出的:向查询点分配的数据类在该点的最近邻居内具有最多的代表。

© www.soinside.com 2019 - 2024. All rights reserved.