python 读取csv文件 在每个类别中选取等比例训练样本和测试样本 贝叶斯分类
时间: 2023-12-14 11:37:25 浏览: 160
python 实现读取csv数据,分类求和 再写进 csv
首先,你需要使用Python中的pandas库来读取csv文件。然后,你可以使用sklearn库中的train_test_split函数来分割数据集为训练集和测试集。在每个类别中选取等比例的样本可以使用pandas库和numpy库来完成。
下面是一个示例代码:
```python
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
# 读取csv文件
data = pd.read_csv('data.csv')
# 筛选出类别
categories = data['category'].unique()
# 初始化训练集和测试集
train_data = pd.DataFrame()
test_data = pd.DataFrame()
# 对于每个类别,随机选取等比例的样本作为训练集和测试集
for category in categories:
category_data = data[data['category'] == category]
train, test = train_test_split(category_data, test_size=0.2)
train_data = pd.concat([train_data, train])
test_data = pd.concat([test_data, test])
# 分离特征和标签
train_features = train_data.drop(['category'], axis=1)
train_labels = train_data['category']
test_features = test_data.drop(['category'], axis=1)
test_labels = test_data['category']
# 训练贝叶斯分类器
clf = GaussianNB()
clf.fit(train_features, train_labels)
# 预测测试集
predicted = clf.predict(test_features)
# 计算准确率
accuracy = np.mean(predicted == test_labels)
print("Accuracy:", accuracy)
```
这个示例代码中,我们首先读取csv文件,并筛选出不同的类别。然后,我们使用train_test_split函数随机选取等比例的训练样本和测试样本。接着,我们分离出特征和标签,并使用GaussianNB训练贝叶斯分类器。最后,我们预测测试集并计算准确率。
阅读全文