【问题标题】:TypeError: invalid type promotion while fitting a logistic regression model in Scikit-learnTypeError:在 Scikit-learn 中拟合逻辑回归模型时类型提升无效
【发布时间】:2020-10-26 18:03:40
【问题描述】:

我正在使用 Sci-kit Learn 构建逻辑回归模型。我的数据主要由 float 和 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.   

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

【问题讨论】:

    标签: python pandas scikit-learn


    【解决方案1】:

    使用日期转换后:

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

    我应用了以下语句:

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

    而且效果很好。

    【讨论】:

      猜你喜欢
      • 2016-09-15
      • 2013-09-30
      • 2017-11-20
      • 2019-04-11
      • 2014-01-07
      • 2016-07-31
      • 2017-03-31
      • 2018-12-01
      • 2022-10-04
      相关资源
      最近更新 更多