Почему показатели точности различаются в моем RF, хотя я установил случайное состояние? ⇐ Python

Программы на Python
Anonymous
Почему показатели точности различаются в моем RF, хотя я установил случайное состояние?

Сообщение Anonymous »

Я использую scikit изучает случайный лес, и если я проведу анализ еще раз, показатели точности останутся в основном такими же, за исключением последних нескольких цифр. Это то, о чем мне следует беспокоиться, или, может быть, я неправильно делаю случайные состояния? Я вставил ниже, как я это делаю:
rf = RandomForestClassifier(random_state=42)

Это то, что я делаю в начале кода, а затем делаю что-то вроде этого:
# Prepare variables for cross-validation
X = df[included_columns] # Features
y = df['strategy_encoded'] # Target variable

# Identify participants for each strategy
unique_strategies = df['strategy'].unique()
strategy_participants = {strategy: df[df['strategy'] == strategy]['participant_number'].unique() for strategy in unique_strategies}

# Generate participant combinations for cross-validation
participant_combinations = list(product(*strategy_participants.values()))

# Initialize lists for results
accuracies = []
training_accuracies = []
confusion_matrices = []
classification_reports = []

# Cross-validation with participant combinations
for combo in participant_combinations:
# Train-test split based on participant combinations
test_indices = df[df['participant_number'].isin(combo)].index
train_indices = df[~df.index.isin(test_indices)].index

X_train, X_test = X.loc[train_indices], X.loc[test_indices]
y_train, y_test = y.loc[train_indices], y.loc[test_indices]

# Train the model
rf = RandomForestClassifier()
rf.fit(X_train, y_train)

# Training accuracy
y_train_pred = rf.predict(X_train)
train_accuracy = accuracy_score(y_train, y_train_pred)
training_accuracies.append(train_accuracy)

# Test accuracy
y_pred = rf.predict(X_test)
test_accuracy = accuracy_score(y_test, y_pred)
accuracies.append(test_accuracy)

# Confusion matrix and classification report
conf_matrix = confusion_matrix(y_test, y_pred)
confusion_matrices.append(conf_matrix)

class_report = classification_report(y_test, y_pred, output_dict=True)
classification_reports.append(class_report)

# Calculate average results across folds
average_test_accuracy = np.mean(accuracies)
average_training_accuracy = np.mean(training_accuracies)
average_conf_matrix = np.mean(confusion_matrices, axis=0)

# Output the results
print("Average Test Accuracy:", average_test_accuracy)
print("Average Training Accuracy:", average_training_accuracy)
print("Average Confusion Matrix:\n", average_conf_matrix)


Подробнее здесь: https://stackoverflow.com/questions/790 ... ndom-state

Вернуться в «Python»