类型错误:在Scikit-learn中拟合逻辑回归模型时,类型升级无效



我正在使用Sci-kit Learn构建逻辑回归模型。我的数据主要由浮点型和 int 类型组成,除了日期列是 datetime64[ns](它的类型是第一个对象,然后我使用

df['date'] = pd.to_datetime(df['date'],infer_datetime_format=True)

我确实拆分了数据以进行训练和测试,当尝试使用logr.fit(X,Y)拟合模型时,出现以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-15-18dd45102c66> in <module>
----> 1 logr.fit(X,Y)
/opt/anaconda3/lib/python3.7/site-packages/sklearn/linear_model/_logistic.py in fit(self, X, y, sample_weight)
1342         X, y = self._validate_data(X, y, accept_sparse='csr', dtype=_dtype,
1343                                    order="C",
-> 1344                                    accept_large_sparse=solver != 'liblinear')
1345         check_classification_targets(y)
1346         self.classes_ = np.unique(y)
/opt/anaconda3/lib/python3.7/site-packages/sklearn/base.py in _validate_data(self, X, y, reset, validate_separately, **check_params)
430                 y = check_array(y, **check_y_params)
431             else:
--> 432                 X, y = check_X_y(X, y, **check_params)
433             out = X, y
434 
/opt/anaconda3/lib/python3.7/site-packages/sklearn/utils/validation.py in inner_f(*args, **kwargs)
71                           FutureWarning)
72         kwargs.update({k: arg for k, arg in zip(sig.parameters, args)})
---> 73         return f(**kwargs)
74     return inner_f
75 
/opt/anaconda3/lib/python3.7/site-packages/sklearn/utils/validation.py in check_X_y(X, y, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, estimator)
801                     ensure_min_samples=ensure_min_samples,
802                     ensure_min_features=ensure_min_features,
--> 803                     estimator=estimator)
804     if multi_output:
805         y = check_array(y, accept_sparse='csr', force_all_finite=True,
/opt/anaconda3/lib/python3.7/site-packages/sklearn/utils/validation.py in inner_f(*args, **kwargs)
71                           FutureWarning)
72         kwargs.update({k: arg for k, arg in zip(sig.parameters, args)})
---> 73         return f(**kwargs)
74     return inner_f
75 
/opt/anaconda3/lib/python3.7/site-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, estimator)
532 
533         if all(isinstance(dtype, np.dtype) for dtype in dtypes_orig):
--> 534             dtype_orig = np.result_type(*dtypes_orig)
535 
536     if dtype_numeric:
<__array_function__ internals> in result_type(*args, **kwargs)
TypeError: invalid type promotion.   

我无法理解此错误指向什么。但是,从研究中,我发现它可能与日期类型有关,但在特别指出日期的错误中没有发现任何内容。 知道吗?

使用以下命令转换日期后:

df['date'] = pd.to_datetime(df['date'],infer_datetime_format=True)

我应用了以下语句:

df['date']=df['date'].apply(lambda x: x.toordinal())

它工作得很好。

最新更新