如何修复“DTYPE <class 'numpy.dtype[datetime64]'> 无法通过 <class 'numpy.dtype[float64]'> 升级。没有常见的 DType

问题描述 投票:0回答:2

我尝试使用决策树从数据集中进行预测,但决策树分类器导致了上述错误。该数据集包含对象类数据、int64 和 datetime64 数据。我已复制以下完整错误:

这是我的第一个堆栈溢出问题,所以如果需要更多信息,请告诉我。


\`\`y = cleaned_datacon \['days_on_market'\]` `x = cleaned_datacon.drop(columns=\['days_on_market'\])\`

`DTclf.fit(x,y)`

`--------------------------------------------------------------------------- `TypeError                                 Traceback (most recent call last)\`\`
`~\AppData\Local\Temp\ipykernel_12312\3583540280.py in <module>`
`----> 1 DTclf.fit(x,y)`

\~\\anaconda3\\lib\\site-packages\\sklearn\\tree_classes.py in fit(self, X, y, sample_weight, check_input)
887         """
888
\--\> 889         super().fit(
890             X,
891             y,

\~\\anaconda3\\lib\\site-packages\\sklearn\\tree_classes.py in fit(self, X, y, sample_weight, check_input)
184             check_X_params = dict(dtype=DTYPE, accept_sparse="csc")
185             check_y_params = dict(ensure_2d=False, dtype=None)
\--\> 186             X, y = self.\_validate_data(
187                 X, y, validate_separately=(check_X_params, check_y_params)
188             )

\~\\anaconda3\\lib\\site-packages\\sklearn\\base.py in \_validate_data(self, X, y, reset, validate_separately, \*\*check_params)
577                 if "estimator" not in check_X_params:
578                     check_X_params = {\*\*default_check_params, \*\*check_X_params}
\--\> 579                 X = check_array(X, input_name="X", \*\*check_X_params)
580                 if "estimator" not in check_y_params:
581                     check_y_params = {\*\*default_check_params, \*\*check_y_params}

\~\\anaconda3\\lib\\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, input_name)
776         )
777         if all(isinstance(dtype_iter, np.dtype) for dtype_iter in dtypes_orig):
\--\> 778             dtype_orig = np.result_type(\*dtypes_orig)
779
780     elif hasattr(array, "iloc") and hasattr(array, "dtype"):

\<__array_function__ internals\> in result_type(\*args, \*\*kwargs)

TypeError: The DType \<class 'numpy.dtype\[datetime64\]'\> could not be promoted by \<class 'numpy.dtype\[float64\]'\>. This means that no common DType exists for the given inputs. For example they cannot be stored in a single array unless the dtype is `object`. The full list of DTypes is: (\<class 'numpy.dtype\[int64\]'\>, \<class 'numpy.dtype\[int64\]'\>, \<class 'numpy.dtype\[int64\]'\>, \<class 'numpy.dtype\[float64\]'\>, \<class 'numpy.dtype\[datetime64\]'\>, \<class 'numpy.dtype\[datetime64\]'\>, \<class 'numpy.dtype\[int64\]'\>, \<class 'numpy.dtype\[float64\]'\>, \<class 'numpy.dtype\[float64\]'\>, \<class 'numpy.dtype\[int64\]'\>, \<class 'numpy.dtype\[float64\]'\>, \<class 'numpy.dtype\[int32\]'\>, \<class 'numpy.dtype\[int32\]'\>, \<class 'numpy.dtype\[int32\]'\>, \<class 'numpy.dtype\[int32\]'\>, \<class 'numpy.dtype\[int32\]'\>, \<class 'numpy.dtype\[int32\]'\>)\`
python decision-tree dtype
2个回答
0
投票

尝试将

datetime64
列转换为
float64
类型。 这个答案可能有帮助。


0
投票

我建议将 datetime64 列分解为单独的日期/时间功能,即。月/小时/工作日等,并将它们输入模型中。

© www.soinside.com 2019 - 2024. All rights reserved.