注解超详细的利用朴素贝叶斯实现森林分类python代码

这篇博客通过朴素贝叶斯算法详细解释了如何进行森林分类。内容包括数据集下载地址、相关资源、代码运行结果及实现代码。作者建议对朴素贝叶斯不熟悉的读者阅读相关书籍,并提供了利用BP神经网络完成相同任务的博文链接。
摘要由CSDN通过智能技术生成

这个也是模式识别的小作业,利用朴素贝叶斯实现森林分类,不明白朴素贝叶斯的同学推荐去看看西瓜书,本文的实现方法和书上一致。PS:转载请注明本文链接

1.数据集下载地址

Forest type mapping Data Set

2.相关资源

我的另一篇博文是利用BP神经网络实现相同任务,如下:
注解超详细的不借助框架实现带dropout的BP神经网络python代码

3.代码运行结果

先放一个代码运行完的结果,证明这个代码是可以运行的
在这里插入图片描述

4.实现代码

# 导入包
import pandas as pd
import numpy as np
import time


def load_datasets(filepath):
    """
    功能:
        读取csv文件数据并进行分割,分割为特征集和标签集
    输入参数:
        filepath - 数据文件路径
    返回值:
        feature - 特征集,一个m*n矩阵,m为样本数,n为特征维度
        label - 标签集,一个m*1的矩阵,m为样本数,1为标签维度,值为0,1,2,3
    """
    dataset = pd.read_csv(filepath)  # 读取csv文件
    dataset['class'] = dataset['class'].map({
   "s ": 0, "h ": 1, "d ": 2, "o ": 3})  # 将字符转换为数值,注意字符后面的空格不能去掉,这是一个坑
    label = dataset.loc[:, ['class']]  # 读取标签,数据类型为DataFrame
    label = np.array(label)  # 转换为array
    feature = dataset.iloc[:, 1:dataset.shape[1]]  # 将特征数据分割出来
    feature = np.array(feature)  # 转换为array
    return feature, label  # (198, 27) (198, 1)


def random_dataset(train_x, train_y, test_x, test_y, seed):
    """
    功能:
        打乱训练集和测试集数据,使数据同分布
    输入参数:
        train_x - 训练特征集,一个m1*n矩阵,m1为训练样本数,n为特征维度
        train_y - 训练标签集,一个m1*1阵,m1为训练样本数
        test_x - 测试特征集,一个m2*n矩阵,m2为测试样本数,n为特征维度
        test_y - 测试标签集,一个m2*1矩阵,m2为测试样本数
        seed - 程序随机种子
    返回值:
        new_train_x - 打乱后的训练特征集,一个m1*n矩阵,m1为训练样本数,n为特征维度
        new_train_y - 打乱后的训练标签集,一个m1*1阵,m1为训练样本数
        new_test_x - 打乱后的测试特征集,一个m2*n矩阵,m2为测试样本数,n为特征维度
        new_test_y - 打乱后的测试标签集,一个m2*1矩阵,m2为测试样本数
    """
    if seed > 0:
        np.random.seed(seed)  # 随机种子大于0,就打乱数据集,设置随机种子
        m = train_x.shape[0]  # 训练样本数
        new_x = np.concatenate((train_x, test_x), axis=0)  # 将特征集进行拼接
        new_y = np.concatenate((train_y, test_y), axis=0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值