从投票分类器、机器学习、python使用硬投票时的AttributeError

从投票分类器、机器学习、python使用硬投票时的AttributeError,python,machine-learning,scikit-learn,attributeerror,Python,Machine Learning,Scikit Learn,Attributeerror,我试图在投票分类器(硬投票)中使用随机林分类器、逻辑回归和SVC,但我遇到了一个错误:AttributeError:'str'对象没有属性'decode' 这是我的密码: from sklearn.ensemble import RandomForestClassifier from sklearn.ensemble import VotingClassifier from sklearn.linear_model import LogisticRegression from sklearn.s

我试图在投票分类器(硬投票)中使用随机林分类器、逻辑回归和SVC,但我遇到了一个错误:AttributeError:'str'对象没有属性'decode'

这是我的密码:

from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import VotingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC

log_clf = LogisticRegression(solver = 'lbfgs', random_state = 42)
rnd_clf = RandomForestClassifier(n_estimators = 100, random_state = 42)
svm_clf = SVC(gamma = "scale", random_state = 42)

voting_clf = VotingClassifier(estimators = [('lr', log_clf), ('rf', rnd_clf), ('svc', svm_clf)], 
                              voting = 'hard')

y_train_raveled = y_train.ravel()
voting_clf.fit(X_train, y_train_raveled)
这是我的X_列车和y_列车:

>>> X_train

array([[-1.00334117e-01,  1.00000000e+00,  0.00000000e+00, ...,
         1.30000000e+01,  4.20000000e+01,  5.60000000e+01],
       [-6.94836737e-03,  0.00000000e+00,  0.00000000e+00, ...,
         8.00000000e+00,  4.90000000e+01,  1.90000000e+01],
       [-7.61506695e-02,  0.00000000e+00,  0.00000000e+00, ...,
         1.40000000e+01,  3.30000000e+01,  5.00000000e+01],
       ...,

>>> y_train.ravel()
array([0., 0., 0., ..., 0., 1., 0.])

这个错误出现了。我已经使用standardScaler()来缩放数字数据,并使用OrdinalCoder()来转换分类数据。谁能告诉我我做错了什么

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-56-5836b28a28cb> in <module>
      1 y_train_raveled = y_train.ravel()
----> 2 voting_clf.fit(X_train, y_train_raveled)

~\Anaconda3\lib\site-packages\sklearn\ensemble\_voting.py in fit(self, X, y, sample_weight)
    220         transformed_y = self.le_.transform(y)
    221 
--> 222         return super().fit(X, transformed_y, sample_weight)
    223 
    224     def predict(self, X):

~\Anaconda3\lib\site-packages\sklearn\ensemble\_voting.py in fit(self, X, y, sample_weight)
     66                 delayed(_parallel_fit_estimator)(clone(clf), X, y,
     67                                                  sample_weight=sample_weight)
---> 68                 for clf in clfs if clf not in (None, 'drop')
     69             )
     70 

~\Anaconda3\lib\site-packages\joblib\parallel.py in __call__(self, iterable)
   1002             # remaining jobs.
   1003             self._iterating = False
-> 1004             if self.dispatch_one_batch(iterator):
   1005                 self._iterating = self._original_iterator is not None
   1006 

~\Anaconda3\lib\site-packages\joblib\parallel.py in dispatch_one_batch(self, iterator)
    833                 return False
    834             else:
--> 835                 self._dispatch(tasks)
    836                 return True
    837 

~\Anaconda3\lib\site-packages\joblib\parallel.py in _dispatch(self, batch)
    752         with self._lock:
    753             job_idx = len(self._jobs)
--> 754             job = self._backend.apply_async(batch, callback=cb)
    755             # A job can complete so quickly than its callback is
    756             # called before we get here, causing self._jobs to

~\Anaconda3\lib\site-packages\joblib\_parallel_backends.py in apply_async(self, func, callback)
    207     def apply_async(self, func, callback=None):
    208         """Schedule a func to be run"""
--> 209         result = ImmediateResult(func)
    210         if callback:
    211             callback(result)

~\Anaconda3\lib\site-packages\joblib\_parallel_backends.py in __init__(self, batch)
    588         # Don't delay the application, to avoid keeping the input
    589         # arguments in memory
--> 590         self.results = batch()
    591 
    592     def get(self):

~\Anaconda3\lib\site-packages\joblib\parallel.py in __call__(self)
    254         with parallel_backend(self._backend, n_jobs=self._n_jobs):
    255             return [func(*args, **kwargs)
--> 256                     for func, args, kwargs in self.items]
    257 
    258     def __len__(self):

~\Anaconda3\lib\site-packages\joblib\parallel.py in <listcomp>(.0)
    254         with parallel_backend(self._backend, n_jobs=self._n_jobs):
    255             return [func(*args, **kwargs)
--> 256                     for func, args, kwargs in self.items]
    257 
    258     def __len__(self):

~\Anaconda3\lib\site-packages\sklearn\ensemble\_base.py in _parallel_fit_estimator(estimator, X, y, sample_weight)
     34             raise
     35     else:
---> 36         estimator.fit(X, y)
     37     return estimator
     38 

~\Anaconda3\lib\site-packages\sklearn\linear_model\_logistic.py in fit(self, X, y, sample_weight)
   1599                       penalty=penalty, max_squared_sum=max_squared_sum,
   1600                       sample_weight=sample_weight)
-> 1601             for class_, warm_start_coef_ in zip(classes_, warm_start_coef))
   1602 
   1603         fold_coefs_, _, n_iter_ = zip(*fold_coefs_)

~\Anaconda3\lib\site-packages\joblib\parallel.py in __call__(self, iterable)
   1002             # remaining jobs.
   1003             self._iterating = False
-> 1004             if self.dispatch_one_batch(iterator):
   1005                 self._iterating = self._original_iterator is not None
   1006 

~\Anaconda3\lib\site-packages\joblib\parallel.py in dispatch_one_batch(self, iterator)
    833                 return False
    834             else:
--> 835                 self._dispatch(tasks)
    836                 return True
    837 

~\Anaconda3\lib\site-packages\joblib\parallel.py in _dispatch(self, batch)
    752         with self._lock:
    753             job_idx = len(self._jobs)
--> 754             job = self._backend.apply_async(batch, callback=cb)
    755             # A job can complete so quickly than its callback is
    756             # called before we get here, causing self._jobs to

~\Anaconda3\lib\site-packages\joblib\_parallel_backends.py in apply_async(self, func, callback)
    207     def apply_async(self, func, callback=None):
    208         """Schedule a func to be run"""
--> 209         result = ImmediateResult(func)
    210         if callback:
    211             callback(result)

~\Anaconda3\lib\site-packages\joblib\_parallel_backends.py in __init__(self, batch)
    588         # Don't delay the application, to avoid keeping the input
    589         # arguments in memory
--> 590         self.results = batch()
    591 
    592     def get(self):

~\Anaconda3\lib\site-packages\joblib\parallel.py in __call__(self)
    254         with parallel_backend(self._backend, n_jobs=self._n_jobs):
    255             return [func(*args, **kwargs)
--> 256                     for func, args, kwargs in self.items]
    257 
    258     def __len__(self):

~\Anaconda3\lib\site-packages\joblib\parallel.py in <listcomp>(.0)
    254         with parallel_backend(self._backend, n_jobs=self._n_jobs):
    255             return [func(*args, **kwargs)
--> 256                     for func, args, kwargs in self.items]
    257 
    258     def __len__(self):

~\Anaconda3\lib\site-packages\sklearn\linear_model\_logistic.py in _logistic_regression_path(X, y, pos_class, Cs, fit_intercept, max_iter, tol, verbose, solver, coef, class_weight, dual, penalty, intercept_scaling, multi_class, random_state, check_input, max_squared_sum, sample_weight, l1_ratio)
    938             n_iter_i = _check_optimize_result(
    939                 solver, opt_res, max_iter,
--> 940                 extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)
    941             w0, loss = opt_res.x, opt_res.fun
    942         elif solver == 'newton-cg':

~\Anaconda3\lib\site-packages\sklearn\utils\optimize.py in _check_optimize_result(solver, result, max_iter, extra_warning_msg)
    241                 "    https://scikit-learn.org/stable/modules/"
    242                 "preprocessing.html"
--> 243             ).format(solver, result.status, result.message.decode("latin1"))
    244             if extra_warning_msg is not None:
    245                 warning_msg += "\n" + extra_warning_msg

AttributeError: 'str' object has no attribute 'decode'

---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在里面
1 y_train_raveld=y_train.ravel()
---->2个投票点(X列、y列)
~\Anaconda3\lib\site packages\sklearn\employee\\u voting.py适合(自身、X、y、样本重量)
220变换的y=自变换(y)
221
-->222 return super().fit(X、转换y、样本重量)
223
224 def预测(自我,X):
~\Anaconda3\lib\site packages\sklearn\employee\\u voting.py适合(自身、X、y、样本重量)
66延迟(_并行_拟合_估计量)(克隆(clf),X,y,
67样品重量=样品重量)
--->如果clf不在clf中,则clf在clf中为68(无,“下降”)
69             )
70
调用中的~\Anaconda3\lib\site packages\joblb\parallel.py(self,iterable)
1002#剩余工作。
1003自迭代=假
->1004如果自行调度一批(迭代器):
1005 self.\u iterating=self.\u original\u iterator不是None
1006
~\Anaconda3\lib\site packages\joblib\parallel.py在dispatch\u one\u批处理中(self,迭代器)
833返回错误
834其他:
-->835自我派遣(任务)
836返回真值
837
~\Anaconda3\lib\site packages\joblib\parallel.py in\u dispatch(self,batch)
752带自锁:
753作业idx=len(自作业)
-->754 job=self.\u backend.apply\u async(批处理,回调=cb)
755#一个作业完成的速度比它的回调速度要快
756#在我们到达这里之前打电话给self.#u jobs
异步应用中的~\Anaconda3\lib\site packages\joblb\\u parallel\u backends.py(self、func、callback)
207 def apply_async(self、func、callback=None):
208“计划要运行的func”
-->209结果=立即结果(func)
210如果回调:
211回调(结果)
~\Anaconda3\lib\site packages\joblib\\u parallel\u backends.py in\uuuuuuu init\uuuu(self,batch)
588#不要延迟应用程序,以免保留输入
589#内存中的参数
-->590 self.results=batch()
591
592 def get(自我):
调用中的~\Anaconda3\lib\site packages\joblb\parallel.py(self)
254具有并行_后端(self._后端,n_作业=self._n_作业):
255返回[func(*args,**kwargs)
-->256用于自身项目中的func、args、kwargs]
257
258定义长度(自):
(.0)中的~\Anaconda3\lib\site packages\joblib\parallel.py
254具有并行_后端(self._后端,n_作业=self._n_作业):
255返回[func(*args,**kwargs)
-->256用于自身项目中的func、args、kwargs]
257
258定义长度(自):
~\Anaconda3\lib\site packages\sklearn\employee\\u base.py in\u parallel\u fit\u估计器(估计器,X,y,样本权重)
34提高
35.其他:
--->36估计量拟合(X,y)
37收益估计器
38
~\Anaconda3\lib\site packages\sklearn\linear\u model\\u logistic.py适合(自身、X、y、样品重量)
1599罚金=罚金,最大平方和=最大平方和,
1600样品重量=样品重量)
->1601对于zip中的类,warm\u start\u coef(类,warm\u start\u coef))
1602
1603折叠,n\u iter=zip(*折叠)
调用中的~\Anaconda3\lib\site packages\joblb\parallel.py(self,iterable)
1002#剩余工作。
1003自迭代=假
->1004如果自行调度一批(迭代器):
1005 self.\u iterating=self.\u original\u iterator不是None
1006
~\Anaconda3\lib\site packages\joblib\parallel.py在dispatch\u one\u批处理中(self,迭代器)
833返回错误
834其他:
-->835自我派遣(任务)
836返回真值
837
~\Anaconda3\lib\site packages\joblib\parallel.py in\u dispatch(self,batch)
752带自锁:
753作业idx=len(自作业)
-->754 job=self.\u backend.apply\u async(批处理,回调=cb)
755#一个作业完成的速度比它的回调速度要快
756#在我们到达这里之前打电话给self.#u jobs
异步应用中的~\Anaconda3\lib\site packages\joblb\\u parallel\u backends.py(self、func、callback)
207 def apply_async(self、func、callback=None):
208“计划要运行的func”
-->209结果=立即结果(func)
210如果回调:
211回调(结果)
~\Anaconda3\lib\site packages\joblib\\u parallel\u backends.py in\uuuuuuu init\uuuu(self,batch)
588#不要延迟应用程序,以免保留输入
589#内存中的参数
-->590 self.results=batch()
591
592 def get(自我):
调用中的~\Anaconda3\lib\site packages\joblb\parallel.py(self)
254具有并行_后端(self._后端,n_作业=self._n_作业):
255返回[func(*args,**kwargs)
-->256用于自身项目中的func、args、kwargs]
257
258定义长度(自):
(.0)中的~\Anaconda3\lib\site packages\joblib\parallel.py
254带p