AttributeError:“MLPClassizer”对象没有属性“\u label\u binarizer”

2024-06-17 12:48:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用sklearn的MLPClassizer利用partial_fit()函数实现批处理训练,但我得到以下错误:

AttributeError: 'MLPClassifier' object has no attribute '_label_binarizer'.

我咨询了一些与此相关的问题。这是我用来重现错误的代码(来自所附的参考):

from __future__ import division 
import numpy as np
from sklearn.datasets import make_classification
from sklearn.neural_network import MLPClassifier

#Creating an imaginary dataset
input, output = make_classification(1000, 30, n_informative=10, n_classes=2)
input= input / input.max(axis=0)
N = input.shape[0]
train_input = input[0:500,:]
train_target = output[0:500]

test_input= input[500:N,:]
test_target = output[500:N]

#Creating and training the Neural Net 
# 1. Disable verbose (verbose is annoying with partial_fit)

clf = MLPClassifier(activation='tanh', learning_rate='constant',
 alpha=1e-4, hidden_layer_sizes=(15,), random_state=1, batch_size=1,verbose= False,
 max_iter=1, warm_start=False)

# 2. Set what the classes are
clf.classes_ = [0,1]

for j in range(0,100):
    for i in range(0,train_input.shape[0]):
       input_inst = train_input[[i]]
       target_inst= train_target[[i]]
       clf=clf.partial_fit(input_inst,target_inst)
    # 3. Monitor progress
    print("Score on training set: %0.8f" % clf.score(train_input, train_target))
#Testing the Neural Net
y_pred = clf.predict(test_input)
print(y_pred)

# 4. Compute score on testing set
print(clf.score(test_input, test_target))

我还修改了第895行的multilayer_perceptron.py代码,以替换前面提到的here

self.label_binarizer_.fit(y)

为此:

if not incremental:
    self.label_binarizer_.fit(y)

else:
    self.label_binarizer_.fit(self.classes_)

但仍然不起作用。非常感谢您的帮助

谢谢


Tags: testimportselftargetinputtrainsklearnpartial
1条回答
网友
1楼 · 发布于 2024-06-17 12:48:35

这将有助于:

from __future__ import division 
import numpy as np
from sklearn.datasets import make_classification
from sklearn.neural_network import MLPClassifier

#Creating an imaginary dataset
input, output = make_classification(1000, 30, n_informative=10, n_classes=2)
input= input / input.max(axis=0)
N = input.shape[0]
train_input = input[0:500,:]
train_target = output[0:500]

test_input= input[500:N,:]
test_target = output[500:N]

#Creating and training the Neural Net 
# 1. Disable verbose (verbose is annoying with partial_fit)

clf = MLPClassifier(activation='tanh', learning_rate='constant',
 alpha=1e-4, hidden_layer_sizes=(15,), random_state=1, batch_size=1,verbose= False,
 max_iter=1, warm_start=False)


for j in range(0,100):
    for i in range(0,train_input.shape[0]):
       input_inst = train_input[[i]]
       target_inst= train_target[[i]]
       clf.partial_fit(input_inst,target_inst,[0,1])
    # 3. Monitor progress
    print("Score on training set: %0.8f" % clf.score(train_input, train_target))
#Testing the Neural Net
y_pred = clf.predict(test_input)
print(y_pred)

# 4. Compute score on testing set
print(clf.score(test_input, test_target))

此行导致错误:

# 2. Set what the classes are
clf.classes_ = [0,1]

你必须在这里通过课程:

clf.partial_fit(input_inst,target_inst,[0,1])

相关问题 更多 >