Home > Blockchain >  How to solve an error, "module 'numpy' has no attribute 'float'"?
How to solve an error, "module 'numpy' has no attribute 'float'"?

Time:01-10

Circumstance

  • WSL2
  • Docker
  • Virtualenv
  • Python 3.8.16
    • jupyterlab 3.5.2
    • numpy 1.24.1
    • prophet 1.1.1
    • fbprophet 0.7.1
    • Cython 0.29.33
    • ipython 8.8.0
    • pmdarima 2.0.2
    • plotly 5.11.0
    • pip 22.3.1
    • pystan 2.19.1.1
    • scikit-learn 1.2.0
    • konlpy 0.6.0 (just in the case)
    • nodejs 0.1.1 (just in the case)
    • pandas 1.5.2 (just in the case)

Error

main error message

AttributeError: module 'numpy' has no attribute 'float'

entire error message

INFO:fbprophet:Disabling yearly seasonality. Run prophet with yearly_seasonality=True to override this.
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[33], line 4
      1 # Prophet() 모델을 읽어와서 
      2 # fit로 학습한다.
      3 model_revenue = Prophet()
----> 4 model_revenue.fit(revenue_serial)

File /home/.venv/lib/python3.8/site-packages/fbprophet/forecaster.py:1115, in Prophet.fit(self, df, **kwargs)
   1112 self.history = history
   1113 self.set_auto_seasonalities()
   1114 seasonal_features, prior_scales, component_cols, modes = (
-> 1115     self.make_all_seasonality_features(history))
   1116 self.train_component_cols = component_cols
   1117 self.component_modes = modes

File /home/.venv/lib/python3.8/site-packages/fbprophet/forecaster.py:765, in Prophet.make_all_seasonality_features(self, df)
    763 # Seasonality features
    764 for name, props in self.seasonalities.items():
--> 765     features = self.make_seasonality_features(
    766         df['ds'],
    767         props['period'],
    768         props['fourier_order'],
    769         name,
    770     )
    771     if props['condition_name'] is not None:
    772         features[~df[props['condition_name']]] = 0

File /home/.venv/lib/python3.8/site-packages/fbprophet/forecaster.py:458, in Prophet.make_seasonality_features(cls, dates, period, series_order, prefix)
    442 @classmethod
    443 def make_seasonality_features(cls, dates, period, series_order, prefix):
    444     """Data frame with seasonality features.
    445 
    446     Parameters
   (...)
    456     pd.DataFrame with seasonality features.
    457     """
--> 458     features = cls.fourier_series(dates, period, series_order)
    459     columns = [
    460         '{}_delim_{}'.format(prefix, i   1)
    461         for i in range(features.shape[1])
    462     ]
    463     return pd.DataFrame(features, columns=columns)

File /home/.venv/lib/python3.8/site-packages/fbprophet/forecaster.py:434, in Prophet.fourier_series(dates, period, series_order)
    417 """Provides Fourier series components with the specified frequency
    418 and order.
    419 
   (...)
    428 Matrix with seasonality features.
    429 """
    430 # convert to days since epoch
    431 t = np.array(
    432     (dates - datetime(1970, 1, 1))
    433         .dt.total_seconds()
--> 434         .astype(np.float)
    435 ) / (3600 * 24.)
    436 return np.column_stack([
    437     fun((2.0 * (i   1) * np.pi * t / period))
    438     for i in range(series_order)
    439     for fun in (np.sin, np.cos)
    440 ])

File /home/.venv/lib/python3.8/site-packages/numpy/__init__.py:284, in __getattr__(attr)
    281     from .testing import Tester
    282     return Tester
--> 284 raise AttributeError("module {!r} has no attribute "
    285                      "{!r}".format(__name__, attr))

AttributeError: module 'numpy' has no attribute 'float'

Example of dataset

    ds                  y
0   2022-09-01 13:00:00 762
1   2022-09-01 15:00:00 746
2   2022-09-01 17:00:00 848
3   2022-09-01 19:00:00 866
4   2022-09-01 21:00:00 632
... ... ...
1881    2022-10-31 13:00:00 684
1882    2022-10-31 15:00:00 749
1883    2022-10-31 17:00:00 779
1884    2022-10-31 19:00:00 573
1885    2022-10-31 21:00:00 510

Type of variable

visitors_serial

ds    datetime64[ns]
y              int64
dtype: object

Short code

...

revenue_serial = pd.DataFrame(pd.to_datetime(df_active_time['START_DATE'], format="%Y%m%d %H:%M:%S"))
revenue_serial['객단가(원)']=df_active_time['객단가(원)']

revenue_serial = revenue_serial.reset_index(drop= True)
revenue_serial = revenue_serial.rename(columns={'START_DATE':'ds', '객단가(원)':'y'})

model_revenue = Prophet().
model_revenue.fit(revenue_serial)

I expected if I do upgrade the version of numpy module, it would be solved. It doesn't happend to solve

CodePudding user response:

you could see it in your code the error numpy actually has no attribute float your code is t = np.array((dates - datetime(1970, 1, 1)).dt.total_seconds().astype(np.float) it should be

 t = np.array(
   (dates - datetime(1970, 1, 1))
       .dt.total_seconds()
        .astype(np.float32) 

CodePudding user response:

The alias numpy.float was deprecated in NumPy 1.20 and was removed in NumPy 1.24.

You can change it to numpy.float_, numpy.float64, or numpy.double. They all mean the same thing.

For your dependency prophet, the actual issue was already fixed in #1850 (March 2021), and it does appear to be fixed in v1.1.1 so it looks like you're not running the version you think you are.

  • Related