检查不同建模时的Python错误

检查不同建模时的Python错误,python,python-3.x,machine-learning,Python,Python 3.x,Machine Learning,我是Python新手,我正在尝试检查不同的模型,看看哪个模型具有更高的准确性。 然而,当我测试它时,我遇到了一些模型的问题 错误为:TypeError:无法克隆对象“”(类型):它似乎不是scikit学习估计器,因为它没有实现“get_params”方法 我已附上以下代码: seed = 6 scoring = 'accuracy' models = [] models.append(('LR', LogisticRegression())) models.append(('LDA', Lin

我是Python新手,我正在尝试检查不同的模型,看看哪个模型具有更高的准确性。 然而,当我测试它时,我遇到了一些模型的问题

错误为:TypeError:无法克隆对象“”(类型):它似乎不是scikit学习估计器,因为它没有实现“get_params”方法

我已附上以下代码:

seed = 6
scoring = 'accuracy'

models = []
models.append(('LR', LogisticRegression()))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier))
models.append(('NB', GaussianNB()))
models.append(('SVM', SVC()))

results = []
names = []

for name, model in models:
    kfold = model_selection.KFold(n_splits =10, random_state = seed)
    cv_results = model_selection.cross_val_score(model, x_train, y_train, cv = kfold, scoring = scoring)
    results.append(cv_results)
    names.append(name)
    msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
    print(msg)
sklearn版本为:0.22.1

带有错误的结果如下所示:

LR: 0.950000 (0.076376)
LDA: 0.975000 (0.038188)
KNN: 0.958333 (0.055902)
D:\Anaconda\installation\lib\site-packages\sklearn\model_selection\_split.py:296: FutureWarning: Setting a random_state has no effect since shuffle is False. This will raise an error in 0.24. You should leave random_state to its default (None), or set shuffle=True.
  FutureWarning
D:\Anaconda\installation\lib\site-packages\sklearn\linear_model\_logistic.py:940: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
    https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
  extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)
D:\Anaconda\installation\lib\site-packages\sklearn\linear_model\_logistic.py:940: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
    https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
  extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)
D:\Anaconda\installation\lib\site-packages\sklearn\linear_model\_logistic.py:940: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
    https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
  extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)
D:\Anaconda\installation\lib\site-packages\sklearn\model_selection\_split.py:296: FutureWarning: Setting a random_state has no effect since shuffle is False. This will raise an error in 0.24. You should leave random_state to its default (None), or set shuffle=True.
  FutureWarning
D:\Anaconda\installation\lib\site-packages\sklearn\model_selection\_split.py:296: FutureWarning: Setting a random_state has no effect since shuffle is False. This will raise an error in 0.24. You should leave random_state to its default (None), or set shuffle=True.
  FutureWarning
D:\Anaconda\installation\lib\site-packages\sklearn\model_selection\_split.py:296: FutureWarning: Setting a random_state has no effect since shuffle is False. This will raise an error in 0.24. You should leave random_state to its default (None), or set shuffle=True.
  FutureWarning
---------------------------------------------------------------------------
Empty                                     Traceback (most recent call last)
D:\Anaconda\installation\lib\site-packages\joblib\parallel.py in dispatch_one_batch(self, iterator)
    796             try:
--> 797                 tasks = self._ready_batches.get(block=False)
    798             except queue.Empty:

D:\Anaconda\installation\lib\queue.py in get(self, block, timeout)
    166                 if not self._qsize():
--> 167                     raise Empty
    168             elif timeout is None:

Empty: 

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
<ipython-input-11-b6b9556f713c> in <module>
     14 for name, model in models:
     15     kfold = model_selection.KFold(n_splits =10, random_state = seed)
---> 16     cv_results = model_selection.cross_val_score(model, x_train, y_train, cv = kfold, scoring = scoring)
     17     results.append(cv_results)
     18     names.append(name)

D:\Anaconda\installation\lib\site-packages\sklearn\model_selection\_validation.py in cross_val_score(estimator, X, y, groups, scoring, cv, n_jobs, verbose, fit_params, pre_dispatch, error_score)
    388                                 fit_params=fit_params,
    389                                 pre_dispatch=pre_dispatch,
--> 390                                 error_score=error_score)
    391     return cv_results['test_score']
    392 

D:\Anaconda\installation\lib\site-packages\sklearn\model_selection\_validation.py in cross_validate(estimator, X, y, groups, scoring, cv, n_jobs, verbose, fit_params, pre_dispatch, return_train_score, return_estimator, error_score)
    234             return_times=True, return_estimator=return_estimator,
    235             error_score=error_score)
--> 236         for train, test in cv.split(X, y, groups))
    237 
    238     zipped_scores = list(zip(*scores))

D:\Anaconda\installation\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 

D:\Anaconda\installation\lib\site-packages\joblib\parallel.py in dispatch_one_batch(self, iterator)
    806                 big_batch_size = batch_size * n_jobs
    807 
--> 808                 islice = list(itertools.islice(iterator, big_batch_size))
    809                 if len(islice) == 0:
    810                     return False

D:\Anaconda\installation\lib\site-packages\sklearn\model_selection\_validation.py in <genexpr>(.0)
    234             return_times=True, return_estimator=return_estimator,
    235             error_score=error_score)
--> 236         for train, test in cv.split(X, y, groups))
    237 
    238     zipped_scores = list(zip(*scores))

D:\Anaconda\installation\lib\site-packages\sklearn\base.py in clone(estimator, safe)
     65                             "it does not seem to be a scikit-learn estimator "
     66                             "as it does not implement a 'get_params' methods."
---> 67                             % (repr(estimator), type(estimator)))
     68     klass = estimator.__class__
     69     new_object_params = estimator.get_params(deep=False)

TypeError: Cannot clone object '<class 'sklearn.tree._classes.DecisionTreeClassifier'>' (type <class 'abc.ABCMeta'>): it does not seem to be a scikit-learn estimator as it does not implement a 'get_params' methods.
LR:0.950000(0.076376)
LDA:0.975000(0.038188)
KNN:0.958333(0.055902)
D:\Anaconda\installation\lib\site packages\sklearn\model\u selection\\u split.py:296:FutureWarning:设置随机\u状态无效,因为随机播放为False。这将在0.24中引发一个错误。您应该将random_状态保留为其默认值(None),或者设置shuffle=True。
未来警告
D:\Anaconda\installation\lib\site packages\sklearn\linear\u model\\u logistic.py:940:ConvergenceWarning:lbfgs未能收敛(状态=1):
停止:达到限制的迭代总数。
增加迭代次数(最大迭代次数)或缩放数据,如所示:
https://scikit-learn.org/stable/modules/preprocessing.html
另请参阅文档以了解备选解算器选项:
https://scikit-learn.org/stable/modules/linear_model.html#logistic-回归
额外警告消息=\u逻辑消息\u解算器\u收敛消息)
D:\Anaconda\installation\lib\site packages\sklearn\linear\u model\\u logistic.py:940:ConvergenceWarning:lbfgs未能收敛(状态=1):
停止:达到限制的迭代总数。
增加迭代次数(最大迭代次数)或缩放数据,如所示:
https://scikit-learn.org/stable/modules/preprocessing.html
另请参阅文档以了解备选解算器选项:
https://scikit-learn.org/stable/modules/linear_model.html#logistic-回归
额外警告消息=\u逻辑消息\u解算器\u收敛消息)
D:\Anaconda\installation\lib\site packages\sklearn\linear\u model\\u logistic.py:940:ConvergenceWarning:lbfgs未能收敛(状态=1):
停止:达到限制的迭代总数。
增加迭代次数(最大迭代次数)或缩放数据,如所示:
https://scikit-learn.org/stable/modules/preprocessing.html
另请参阅文档以了解备选解算器选项:
https://scikit-learn.org/stable/modules/linear_model.html#logistic-回归
额外警告消息=\u逻辑消息\u解算器\u收敛消息)
D:\Anaconda\installation\lib\site packages\sklearn\model\u selection\\u split.py:296:FutureWarning:设置随机\u状态无效,因为随机播放为False。这将在0.24中引发一个错误。您应该将random_状态保留为其默认值(None),或者设置shuffle=True。
未来警告
D:\Anaconda\installation\lib\site packages\sklearn\model\u selection\\u split.py:296:FutureWarning:设置随机\u状态无效,因为随机播放为False。这将在0.24中引发一个错误。您应该将random_状态保留为其默认值(None),或者设置shuffle=True。
未来警告
D:\Anaconda\installation\lib\site packages\sklearn\model\u selection\\u split.py:296:FutureWarning:设置随机\u状态无效,因为随机播放为False。这将在0.24中引发一个错误。您应该将random_状态保留为其默认值(None),或者设置shuffle=True。
未来警告
---------------------------------------------------------------------------
空回溯(最后一次最近调用)
D:\Anaconda\installation\lib\site packages\joblib\parallel.py在dispatch\u one\u批处理中(self,迭代器)
796尝试:
-->797任务=self.\u ready\u batches.get(block=False)
798队列除外。空:
get中的D:\Anaconda\installation\lib\queue.py(self、block、timeout)
166如果不是自己的话。qsize()
-->167空举
168 elif超时为无:
空的:
在处理上述异常期间,发生了另一个异常:
TypeError回溯(最近一次调用上次)
在里面
14对于名称,模型中的模型:
15 kfold=模型选择.kfold(n\u分割=10,随机状态=种子)
--->16 cv\u结果=模型选择。交叉值评分(模型,x\u序列,y\u序列,cv=kfold,评分=评分)
17结果。附加(cv_结果)
18名称。附加(名称)
D:\Anaconda\installation\lib\site packages\sklearn\model\u selection\\u validation.py交叉评分(估计器、X、y、组、评分、cv、n作业、冗余、拟合参数、预调度、错误评分)
388拟合参数=拟合参数,
389预调度=预调度,
-->390错误分数=错误分数)
391返回简历结果[“测试分数”]
392
交叉验证中的D:\Anaconda\installation\lib\site packages\sklearn\model\u selection\\u validation.py(估计器、X、y、组、评分、cv、n作业、详细信息、拟合参数、预调度、返回列车评分、返回估计器、错误评分)
234返回次数=真,返回估计数=返回估计数,
235错误分数=错误分数)
-->236列车,等速分段试验(X、y、组))
237
238压缩分数=列表(压缩(*分数))
D:\Anaconda\installation\lib\site packages\joblib\parallel.py in\uuuu调用(self,iterable)
1002#剩余工作。
1003自迭代=假
->1004如果自行调度一批(迭代器):
1005 self.\u iterating=self.\u original\u iterator不是None
1006
D:\Anaconda\installation\lib\site packages\joblib\parallel.py在dispatch\u one\u批处理中(self,迭代器)
806大批量大小=批量大小*n个作业
807
-->808 islice=list(itertools.islice(迭代器,大批量大小))
809如果len(islice)==0:
810返回错误
D:\Anaconda\installation\lib\site packages\sklearn\model\u selection\\u validation.py in(.0)
234