如何解决错误:类型错误:“dict”和“int”的实例之间不支持“<”/使用 skmultilearn 模型
我拥有的数据如下。
x = 图像数据 (100,256,1)
y = 数据分为 26 个标签 (100,26)
为了解决这个问题,我了解到需要创建一个多标签分类模型,所以我使用了sklearn提供的MLkNN,但是继续出现下面的错误。
我是多标签问题的新手,所以我了解的不多。我怎么解决这个问题?谢谢!
下面是我运行的代码。
import PIL.Image as pilimg
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from keras.models import Sequential
from keras.layers import Dense,Conv2D,MaxPooling2D,Flatten,Dropout,BatchNormalization,LSTM
from tensorflow.keras.callbacks import EarlyStopping,ModelCheckpoint,ReduceLROnPlateau
from tensorflow.keras.optimizers import Adam
from sklearn.metrics import accuracy_score
import warnings
# warnings.filterwarnings('ignore')
# x data =====================================
x = np.load('../data/npy/dirty_mnist_train_all(50000).npy')[:100]
x = x.reshape(x.shape[0],x.shape[1]*x.shape[2])
print(x.shape) #(100,65536)
# y data =====================================
y = np.load('../data/npy/dirty_mnist_2nd_answer.npy')[:100]
print(y.shape) #(100,26)
# prepocessing =====================================
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.1)
# model =====================================
from skmultilearn.adapt import MLkNN
classifier = MLkNN({'k':26})
# fit =====================================
classifier.fit(x_train,y_train)
# predict =====================================
y_pred = classifier.predict(x_test)
accuracy_score(y_test,y_pred)
print('accuracy_score: ',accuracy_score)
下面是我得到的错误。
2021-02-15 00:08:22.692747: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_101.dll
(100,65536)
(100,26)
C:\Users\lemon\anaconda3\lib\site-packages\sklearn\utils\validation.py:67: FutureWarning: Pass n_neighbors={'k': 26} as keyword args. From version 0.25 passing these as positional arguments will result in an error
warnings.warn("Pass {} as keyword args. From version 0.25 "
Traceback (most recent call last):
File "c:\Myown\dacon12\skmulti_1_adapter_agorithm_01.py",line 42,in <module>
classifier.fit(x_train,y_train)
File "C:\Users\lemon\anaconda3\lib\site-packages\skmultilearn\adapt\brknn.py",line 39,in fit
self.knn_ = NearestNeighbors(self.k).fit(X)
File "C:\Users\lemon\anaconda3\lib\site-packages\sklearn\neighbors\_base.py",line 1173,in fit
return self._fit(X)
File "C:\Users\lemon\anaconda3\lib\site-packages\sklearn\neighbors\_base.py",line 439,in _fit
self.n_neighbors < self._fit_X.shape[0] // 2) and
TypeError: '<' not supported between instances of 'dict' and 'int'
非常感谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。