train_test_split random_state не работает;каждый раз выдает разные результаты - PullRequest
1 голос
/ 04 октября 2019

Итак, я использовал KNN для набора данных со значением random_state = 4 на этапе train_test_split. Несмотря на использование случайного состояния, выходные данные точности, отчета о классификации, прогноза и т. Д. Каждый раз различаются. Было интересно, почему это было?

Вот заголовок данных: (прогнозирование позиции на основе 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)

1 Ответ

0 голосов
/ 04 октября 2019

Althought train_test_split имеет случайный фактор, связанный с ним, и его нужно решать, чтобы избежать случайных результатов, это не единственный фактор, над которым нужно работать.

KNN - это модель, которая принимаеткаждая строка набора тестов находит ближайшие k векторы обучающего набора и классифицирует его по решению большинства, и даже в случае связей решение является случайным. Вам необходимо set.seed(x), чтобы обеспечить возможность репликации метода.

Документация состояния:

Классификация на основе соседей является типом на основе экземпляров. обучение или необщее обучение: оно не пытается построить общую внутреннюю модель, а просто хранит экземпляры обучающих данных. Классификация вычисляется простым простым большинством голосов ближайших соседей каждой точки: точке запроса назначается класс данных, который имеет наибольшее число представителей в пределах ближайших соседей точки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...