Python ValueError:y在类0中只有1个样本,协方差定义不正确。而QDA分类

Python ValueError:y在类0中只有1个样本,协方差定义不正确。而QDA分类,python,machine-learning,classification,quadratic,Python,Machine Learning,Classification,Quadratic,当我尝试对数据集进行分类时,标题处出现了错误 我的数据集是一个4输入4输出的数据集。我的输入和输出是数组,每个数组有414个值,它的形状是(414,4) 这是我的密码 import numpy as np import pandas as pd from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis names = ['pH', 'BOI5', 'AKM', 'KOI'] dataframe = pd.r

当我尝试对数据集进行分类时,标题处出现了错误

我的数据集是一个4输入4输出的数据集。我的输入和输出是数组,每个数组有414个值,它的形状是(414,4)

这是我的密码

import numpy as np
import pandas as pd
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis


names = ['pH', 'BOI5', 'AKM', 'KOI']
dataframe = pd.read_excel ("C:/Users/hayri/Desktop/aabb.xlsx") 
array = dataframe.values
X = array[:,0:4]
Y = array[:,4:8]

Y = np.argmax(Y, axis=1)
qda = QuadraticDiscriminantAnalysis(store_covariance=True)
qda.fit(X,Y)

我是机器学习新手,所以从stacktrace中获得的每一个信息都会很有帮助。似乎只有一个类0的示例,它使得QDA的协方差矩阵计算定义不清。尝试打印每个类中的元素数,以验证是否存在这种情况。

从stacktrace中,似乎只有一个类0的示例,这使得QDA的协方差矩阵计算定义不清。尝试打印每个类中元素的数量,以验证是否存在这种情况。

错误表示您的一个类(即类0)在训练集中只有一个样本,因此这使得QDA算法中的svd步骤的计算不可能(因为您正试图为空矩阵计算svd,请参阅了解更多信息)

错误表明您的一个类(即类0)在训练集中只有一个样本,因此这使得在QDA算法中无法计算svd步骤(因为您试图为空矩阵计算svd,请参阅以获取更多信息)

发布完整的错误文件“C:\Users\hari\Anaconda3\lib\site packages\sklearn\discriminant\u analysis.py”,第687行,在fit中“定义不清”。%str(self.classes\uu[ind])值错误:y在类0中只有一个样本,协方差定义不清。发布完整的错误文件“C:\Users\hari\Anaconda3\lib\site packages\sklearn\discriminant\u analysis.py”“,第687行,在拟合中”定义不清。“%str(self.classes_u[ind])ValueError:y在类0中只有一个样本,协方差定义不清。是的,我已删除了0类,现在得到的错误是ValueError:bad input shape(331,4),我不能拟合(331,4)QDayY中的数组应该是一个简单的向量,具有与类对应的4个值之一。X是一个矩阵,行是一个观察值,列对应于您计算的特征(pH、BOI5、AKM、KOI)。这里您可以看到一个工作示例:您的输入是什么,您试图预测什么?您还应该关闭此问题并编写另一个问题以保持问题的焦点。是的,我已删除了0类,现在我得到的错误是ValueError:输入形状(331,4)不正确,我不能将(331,4)数组拟合到QDay中吗?您的Y应该是一个简单的向量,具有与类对应的4个值之一。X是一个矩阵,行是一个观察值,列对应于您计算的特征(pH、BOI5、AKM、KOI)。这里您可以看到一个工作示例:您的输入是什么,您试图预测什么?你也应该结束这个问题,写另一个问题,以保持问题的重点。