如何解决获取TypeError:稀疏矩阵长度不明确;在进行多类分类时使用getnnz或shape [0]
X_train = X_train.todense()
X_test = X_test.todense()
我尝试使用X.todense(),但错误仍然出现。
from skmultilearn.adapt import MLkNN
from sklearn.metrics import accuracy_score
classifier = MLkNN(k=20)
classifier.fit(X_train,y_train)
训练数据集
y_pred = classifier.predict(X_test)
accuracy_score(y_test,y_pred)
np.concatenate((y_pred.reshape(len(y_pred),1),y_test.reshape(len(y_test),1)),1)
预测训练后的数据集的输出。
from tkinter import *
from tkinter import ttk
root = Tk()
def startPage(root):
content = ttk.Frame(root) #frame for plaing everything into
#frame = ttk.Frame(content,borderwidth=5,relief="sunken",width=200,height=100) #fram for plaxing images
lbl1 = ttk.Label(content,text="Is this a new or existing site?",font=("arial",12)) #setup of label for screen 1
yesvar = BooleanVar() #variables for check boxes later on
novar = BooleanVar()
yesvar.set(False)
novar.set(False)
one = ttk.Checkbutton(content,text="Yes",variable=yesvar,onvalue=True) #check buttons setup
two = ttk.Checkbutton(content,text="No",variable=novar,onvalue=True)
ok = ttk.Button(content,text="New",command = nextPage) #setup for buttons screen 1
cancel = ttk.Button(content,text="Existing")
content.grid(column=0,row=0) #intilises content
#frame.grid(column=0,row=0,columnspan=3,rowspan=2)
lbl1.grid(column=0,pady=10,padx=10) #places the label asking the question with a gap either side for the window bindings
#name.grid(column=3,row=1,columnspan=2)
#one.grid(column=0,row=3)
#two.grid(column=1,row=3)
ok.grid(column=0,padx=10) #places yes button 10 away from each edge
cancel.grid(column=1,padx=10) #as above
def setupPage(root):
content = ttk.Frame(root) #frame for plaing everything into
#frame = ttk.Frame(content,height=100) #fram for plaxing images
lbl1 = ttk.Label(content,text="Select meterial 1",12)) #setup of label for screen 1
lbl2 = ttk.Label(content,text = "Select meterial 2",font = ("arial",12))
content.grid(column=0,row=0)
lbl1.grid(column=0,columnspan=1,padx=10)
lbl2.grid(column=1,padx=10)
clicked = StringVar()
clicked.set("lo2")
clicked2 = StringVar()
clicked2.set("lo2")
drop2 = OptionMenu(root,clicked2,"lo2","mo3","Lo2+mo3")
drop = OptionMenu(root,clicked,"Lo2+mo3")
drop.grid(column=0,padx=10,sticky=NW)
drop2.grid(column=1,sticky=NW)
def nextPage():
global pagenum,root
for widget in root.winfo_children():
widget.destroy()
if pagenum == 1:
setupPage(root)
pagenum = 2
else :
startPage(root)
pagenum = 1
startPage(root)
pagenum = 1
root.mainloop()
解决方法
您正在尝试从模棱两可的矩阵中获取长度:
len(y_pred)
如y_pred.shape
所示,矩阵y_pred的维数为(25,5)。
因此,您可以使用len(y_pred)
代替y_pred.shape[0]
,它返回25。
但是当您使用y_pred.reshape(y_pred.shape[0],1)
ValueError:无法将大小为125的数组重塑为形状(25,1)
(以前是y_pred.reshape(len(y_pred),1)
)
此错误是有道理的,因为您正在尝试将125个值的矩阵重塑为仅25个值的矩阵。您需要在这里重新考虑您的代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。