从投票分类器、机器学习、python使用硬投票时的AttributeError
我试图在投票分类器(硬投票)中使用随机林分类器、逻辑回归和SVC,但我遇到了一个错误:AttributeError:'str'对象没有属性'decode' 这是我的密码:从投票分类器、机器学习、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
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