You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已有trainset.csv和testset.csv,如何用Python实现朴素贝叶斯算法?

用已有训练/测试集实现朴素贝叶斯的正确操作

你不需要用train_test_split,这个函数是用来从单一数据集中划分训练/测试集的,而你已经有单独的trainset.csv和testset.csv,直接读取文件训练模型即可,具体步骤如下:

1. 导入所需库

import pandas as pd
from sklearn.naive_bayes import GaussianNB  # 根据数据类型选择对应NB模型
from sklearn.metrics import accuracy_score

注:如果你的数据是离散计数特征(如文本词频),改用MultinomialNB;如果是二元特征,改用BernoulliNB

2. 读取并拆分数据集

假设你的CSV文件中,标签列名为label(根据实际列名修改):

# 读取训练集和测试集
train_data = pd.read_csv("trainset.csv")
test_data = pd.read_csv("testset.csv")

# 分离特征矩阵和标签向量
X_train = train_data.drop("label", axis=1)
y_train = train_data["label"]
X_test = test_data.drop("label", axis=1)
y_test = test_data["label"]

3. 训练朴素贝叶斯模型

# 初始化模型
nb_model = GaussianNB()

# 用训练集训练模型
nb_model.fit(X_train, y_train)

4. 模型预测与评估

# 对测试集做预测
y_pred = nb_model.predict(X_test)

# 计算准确率(可替换为其他评估指标如precision、recall)
accuracy = accuracy_score(y_test, y_pred)
print(f"模型测试准确率: {accuracy:.2f}")

额外提示

  • 如果数据存在缺失值,先用fillna()填充(如X_train.fillna(X_train.mean(), inplace=True))
  • 如果有类别型特征,需用OneHotEncoder或LabelEncoder做编码转换,确保模型能处理数值型输入

内容的提问来源于stack exchange,提问作者ouzzan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:01:16