Различные результаты (с семенами) для случайного леса SklearnPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Различные результаты (с семенами) для случайного леса Sklearn

Сообщение Гость »

Я использую Sklearn, чтобы запустить случайный лес. Я устанавливаю семя для случайного леса, а также разделяю данные для перекрестной проверки. Когда я перезапустил код подряд, он дает мне тот же результат. Тем не менее, перезагружая один и тот же код через месяц, я получил немного разные импорты функций. В некоторых других подобных анализах показатели точности тоже различны. Данные не были изменены. Я работаю в Google Colab. < /P>
Вот мой код: < /p>
# Configuration
file_path = '/content/drive/My Drive/dataset.csv'
columns_to_keep = [
'target_column', 'feature_a', 'feature_b', 'feature_c', 'feature_d', 'feature_e',
'feature_f', 'feature_g', 'feature_h', 'feature_i', 'feature_j', 'feature_k', 'feature_l',
'feature_m', 'feature_n', 'feature_o', 'feature_p', 'feature_q', 'feature_r', 'feature_s',
'feature_t', 'feature_u', 'feature_v', 'feature_w', 'feature_x', 'feature_y', 'feature_z',
'feature_aa', 'feature_ab', 'feature_ac', 'feature_ad', 'feature_ae', 'feature_af', 'feature_ag',
'feature_ah', 'feature_ai', 'feature_aj', 'feature_ak', 'feature_al', 'feature_am', 'feature_an'
]

df = pd.read_csv(file_path, usecols=columns_to_keep)

categorical_columns = ['feature_ak', 'feature_al', 'feature_am', 'feature_an', 'feature_ao']
one_hot_columns = ['feature_al', 'feature_ak']

df = df.dropna()

# One-hot encode the specified column
le = LabelEncoder()
for col in one_hot_columns:
df[col] = le.fit_transform(df[col])

# Convert specified columns to categorical
for col in categorical_columns:
df[col] = df[col].astype('category')

# Split into features and target
X = df.drop(columns=['target_column'])
y = df['target_column']

# Initialize the RandomForestClassifier model
rf_model = RandomForestClassifier(n_estimators=100, random_state=42)

# Initialize k-fold cross-validation
kf = KFold(n_splits=5, shuffle=True, random_state=42)

# Store results
feature_importances_list = []
all_y_true = []
all_y_pred = []

# Perform k-fold cross-validation
for fold_num, (train_index, test_index) in enumerate(kf.split(X), start=1):
# Split the data
X_train, X_test = X.iloc[train_index], X.iloc[test_index]
y_train, y_test = y.iloc[train_index], y.iloc[test_index]

# Train the Random Forest model
rf_model.fit(X_train, y_train)

# Predict on the test set
y_pred = rf_model.predict(X_test)

# Collect all true and predicted labels
all_y_true.extend(y_test)
all_y_pred.extend(y_pred)

# Get feature importances for this fold
feature_importances_list.append(rf_model.feature_importances_)

# Calculate and print the accuracy for this fold
accuracy_fold = accuracy_score(y_test, y_pred)
print(f"Fold {fold_num} Accuracy: {accuracy_fold:.4f}")

# Calculate accuracy across all predictions
accuracy_cv = accuracy_score(all_y_true, all_y_pred)

# Generate a classification report
final_report = classification_report(all_y_true, all_y_pred, digits=3)

# Average feature importances across folds
average_importance = sum(feature_importances_list) / len(feature_importances_list)

# Create a DataFrame with feature names and their corresponding average importance
feature_names = X.columns
importance_df = pd.DataFrame({
'Feature': feature_names,
'Importance': average_importance
}).sort_values(by='Importance', ascending=False)

# Print Results
print(f"Overall Accuracy of Random Forest model with k-fold CV: {accuracy_cv:.4f}")

print("\nFinal Classification Report:")
print(final_report)

print("\nRandom Forest Feature Importances (averaged across folds):")
print(importance_df.head(20))


Подробнее здесь: https://stackoverflow.com/questions/794 ... dom-forest
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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