小工具知识网

当前位置: 首页 > 行业知识 > 随机森林算法实现分类

行业知识

随机森林算法实现分类

2026-11-11 18:51:52 来源:互联网转载

随机森林算法实现对编码后二进制数据的识别

1.直接先上代码!
import numpy as npimport pandas as pdfrom sklearn.model_selection import train_test_split, GridSearchCVfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.metrics import accuracy_scorefrom sklearn.preprocessing import StandardScalerfrom joblib import dump, load# 读取数据data = pd.read_excel('/root/分类数据集.xlsx', sheet_name=0)# 提取特征和标签binary_strings = data["编码后数据"].valuesy = data["类型"]max_length = max(len(s) for s in binary_strings)X = np.array([list(map(int, s.zfill(max_length))) for s in binary_strings])# 样本标签数值化处理target_map = {"ldpc": 0, "han": 1, "conv": 2}target = y.map(target_map)# 划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(X, target, test_size=0.2, random_state=42)# 特征缩放scaler = StandardScaler()X_train_scaled = scaler.fit_transform(X_train)X_test_scaled = scaler.transform(X_test)# 创建随机森林分类器实例rf = RandomForestClassifier(random_state=42)# 定义超参数搜索空间param_grid = {    'n_estimators': [100, 200],  # 决策树的数量    'max_depth': [None, 10, 20],  # 树的最大深度    'min_samples_split': [2, 5],  # 分裂内部节点所需的最小样本数    'min_samples_leaf': [1, 2],   # 叶节点所需的最小样本数    'bootstrap': [True, False]    # 是否使用bootstrap样本}# 创建GridSearchCV实例grid_search = GridSearchCV(estimator=rf, param_grid=param_grid, cv=5, scoring='accuracy', n_jobs=-1)# # 用GridSearchCV在给定的超参数网格上进行搜索grid_search.fit(X_train_scaled, y_train)# 使用找到的最佳参数的模型进行预测best_rf = grid_search.best_estimator_# 保存模型到文件model_filename = 'best_random_forest64.joblib'dump(best_rf, model_filename)# 保存 StandardScalerscaler_filename = 'scaler64.joblib'dump(scaler, scaler_filename)# 假设 max_length 已经在您的代码中计算出来了max_length_filename = 'max_length64.joblib'dump(max_length, max_length_filename)y_pred = best_rf.predict(X_test_scaled)# 评估模型accuracy = accuracy_score(y_test, y_pred)print(f"Accuracy on test set with best parameters: {accuracy:.2f}")
2.代码解读

这是一个典型的机器学习流程,用于构建和评估一个随机森林分类器。

  1. 导入必要的库:
    • numpy 和 pandas 用于数据处理。
    • train_test_split 和 GridSearchCV 来自 sklearn.model_selection,用于划分数据集和超参数优化。
    • RandomForestClassifier 来自 sklearn.ensemble,是用于分类的随机森林模型。
    • accuracy_score 来自 sklearn.metrics,用于计算模型准确度。
    • StandardScaler 来自 sklearn.preprocessing,用于特征缩放。
    • dump 和 load 来自 joblib,用于模型和数据的保存和加载。
    • 数据加载:
      • 使用 pandas 的 read_excel 函数从 Excel 文件中加载数据。
      • 特征和标签提取:
        • 将数据集中的“编码后数据”列转换为数值列表,并将“类型”列作为标签。
        • 数据预处理:
          • 确定最大长度以保证所有样本长度一致。
          • 使用 map 方法将标签转换为数值。
          • 数据划分:
            • 使用 train_test_split 将数据集划分为训练集和测试集。
            • 特征缩放:
              • 使用 StandardScaler 对训练集和测试集进行特征缩放。
              • 模型初始化:
                • 创建 RandomForestClassifier 实例。
                • 超参数搜索:
                  • 定义一个超参数网格,包括决策树数量、树的最大深度等。
                  • 使用 GridSearchCV 进行交叉验证和超参数搜索。
                  • 模型训练:
                    • 使用训练集数据训练模型,并找到最佳参数。
                    • 模型保存:
                      • 将最佳模型、标量器和最大长度保存到文件中。
                      • 模型评估:
                        • 使用测试集评估模型的准确度,并打印结果

通过这个过程,我们不仅展示了如何构建一个分类模型,还介绍了如何通过超参数优化来提高模型的性能。

3.数据集部分截图

就介绍到这里啦~~

​ 如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

​ 如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

​ 如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

上一篇:cf单机怎么创服务器?

下一篇:RINEX观测值文件读取(O文件)