Datetime64[ns]で日付を取得したが、線形回帰のfitでTypeErrorが発生する
CSVの日付データをdatetime64[ns]型で読み込んだのですが、線形回帰のfit時にエラーが発生します。
線形回帰では、datetime64[ns]型は使えないのでしょうか?
解決策があれば、教えていただきたいと考えております。
日付データを文字列として読み込んだ場合は、fit時にエラーが出ません。
Python
1# 日付をdatetime型で取得 2train=pd.read_csv("./train.csv", parse_dates=[0]) # 日付をdatetime型で取得 3test=pd.read_csv("./test.csv", parse_dates=[0]) 4submit_sample=pd.read_csv("./sample_submit.csv", header=None) 5 6df = pd.concat([train, test], sort=False) 7df.info() 8df.head(10)
線形回帰のFit
Python
1from sklearn.linear_model import LinearRegression 2lr = LinearRegression() 3 4lr.fit(X_train, y_train) # 線形モデルの重みを学習
エラーメッセージ
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-21-c639281fc274> in <module> 1 lr = LinearRegression() 2 ----> 3 lr.fit(X_train, y_train) # 線形モデルの重みを学習 C:\anaconda\lib\site-packages\sklearn\linear_model\_base.py in fit(self, X, y, sample_weight) 516 accept_sparse = False if self.positive else ['csr', 'csc', 'coo'] 517 --> 518 X, y = self._validate_data(X, y, accept_sparse=accept_sparse, 519 y_numeric=True, multi_output=True) 520 C:\anaconda\lib\site-packages\sklearn\base.py in _validate_data(self, X, y, reset, validate_separately, **check_params) 431 y = check_array(y, **check_y_params) 432 else: --> 433 X, y = check_X_y(X, y, **check_params) 434 out = X, y 435 C:\anaconda\lib\site-packages\sklearn\utils\validation.py in inner_f(*args, **kwargs) 61 extra_args = len(args) - len(all_args) 62 if extra_args <= 0: ---> 63 return f(*args, **kwargs) 64 65 # extra_args > 0 C:\anaconda\lib\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) 812 raise ValueError("y cannot be None") 813 --> 814 X = check_array(X, accept_sparse=accept_sparse, 815 accept_large_sparse=accept_large_sparse, 816 dtype=dtype, order=order, copy=copy, C:\anaconda\lib\site-packages\sklearn\utils\validation.py in inner_f(*args, **kwargs) 61 extra_args = len(args) - len(all_args) 62 if extra_args <= 0: ---> 63 return f(*args, **kwargs) 64 65 # extra_args > 0 C:\anaconda\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) 538 539 if all(isinstance(dtype, np.dtype) for dtype in dtypes_orig): --> 540 dtype_orig = np.result_type(*dtypes_orig) 541 542 if dtype_numeric: <__array_function__ internals> in result_type(*args, **kwargs) TypeError: The DTypes <class 'numpy.dtype[float64]'> and <class 'numpy.dtype[datetime64]'> do not have a common DType. For example they cannot be stored in a single array unless the dtype is `object`.
実行環境
Python 3.8
Jupyter notebook(anaconda)
あなたの回答
tips
プレビュー