我有一个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数据?
谢谢你的帮助!
1条答案
按热度按时间2izufjch1#
我不太了解你的数据,但即使有10000行也不足以正确训练模型。而且您已经有太多列了。你能通过使用领域知识来减少你的专栏吗?或者你有没有试过其他型号来检查NB是不是坏的那款。