python GaussianNB不是基于直方图的类的正确模型?

l5tcr1uw  于 2023-05-05  发布在  Python
关注(0)|答案(1)|浏览(89)

我有一个1140列的Excel文件A:AQV。每一个都有31行,它们的数字在0和1之间。这些可以显示为直方图。无论曲线看起来是好的、中等的还是坏的,A:AQV中还有一行包含类(0,1,4)。
我希望AI模型通过查看每列中从0到1的31个值来预测类(0,1,4)。
下面是我的代码:

import pandas as pd
from pandas import *
import numpy as np
import glob
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score

path = 'C:/Users/user/Desktop/JupyterNB/train.xlsx'
dfs = []
df = []
y = []

for f in glob.glob(path):
    dfs.append(pd.read_excel(f, skiprows=2, usecols='A:AQV', nrows=31))
    L = [(x-np.min(x))/(np.max(x)-np.min(x)) for x in dfs]
df = pd.concat(L, ignore_index=True, axis=1)

y = [pd.read_excel(path, usecols='A:AQV', skiprows=80, nrows=1)]
y_char = pd.concat(y, ignore_index=True, axis=1)

y_char = y_char.T
df = df.T

x_train, x_test, y_train, y_test = train_test_split(df, y_char, test_size=0.33, random_state=38)
clf = GaussianNB()
model = clf.fit(x_train, y_train)
preds = clf.predict(x_test)
print(preds)

print(accuracy_score(y_test, preds))

我无法达到60%或更高的准确率。我很确定我在这个excel文件中的分类非常合适。有没有其他原因,我不能得到超过60%?也许模型不适合我的问题?或者它不是enoguh数据?
谢谢你的帮助!

2izufjch

2izufjch1#

我不太了解你的数据,但即使有10000行也不足以正确训练模型。而且您已经有太多列了。你能通过使用领域知识来减少你的专栏吗?或者你有没有试过其他型号来检查NB是不是坏的那款。

相关问题