TypeError: объект 'module' не вызывается в MLPRegressor - PullRequest
0 голосов
/ 05 апреля 2020

При попытке запустить это я получаю ошибку ниже. Я не совсем уверен, как решить это. Поскольку я довольно новичок в этом, поэтому я очень признателен за любую помощь.

здесь я использую разные модели для проверки, какая из них лучше здесь ..

проверьте этот код импорта:

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.colors as mcolors
import pandas as pd 
import plotly.express as px
from datetime import date, timedelta
import random
import math
import time
import operator 
import folium
import plotly.offline as py

from sklearn.linear_model import LinearRegression, BayesianRidge
from sklearn.model_selection import RandomizedSearchCV, train_test_split
from sklearn.preprocessing import PolynomialFeatures
from fbprophet import Prophet
from fbprophet.plot import plot_plotly, add_changepoints_to_plot
from sklearn import preprocessing, cross_validation
from sklearn.tree import DecisionTreeRegressor
from sklearn.neural_network import MLPRegressor
from sklearn.svm import SVR
from sklearn.metrics import mean_squared_error, mean_absolute_error
from statsmodels.tsa.arima_model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import statsmodels.api as sm
from keras.models import Sequential
from keras.layers import LSTM,Dense
from keras.layers import Dropout
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.preprocessing.sequence import TimeseriesGenerator

plt.style.use('fivethirtyeight')
%matplotlib inline 

Отклонение модели для полиномиальной регрессии

data1 = confirmed_df.melt(value_vars=dates1, var_name='Date', value_name='Confirmed')
data1 = data1.groupby('Date')['Confirmed'].sum().reset_index()
data1.head()

X = pd.DataFrame(data=data1, columns=data1.Date)
y = data1.Confirmed
y -= y.mean()

#cross_validation.train_test_split(x, y, test_size=0.1,random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1,
                                                    random_state=0)

Прогон модели:

print("Training MLPRegressor...")
tic = time()
est = make_pipeline(QuantileTransformer(),
                    MLPRegressor(hidden_layer_sizes=(32, 35, 10),
                                 learning_rate_init=0.01,
                                 max_iter=50000, alpha=0.0005,
                                 early_stopping=True))
est.fit(X_train, y_train)
print("done in {:.3f}s".format(time() - tic))
print("Test R2 score: {:.2f}".format(est.score(X_test, y_test)))

# model = MLPRegressor(hidden_layer_sizes=[32, 32, 10],activation='relu', solver='adam', max_iter=50000, alpha=0.0005, random_state=26)
# _=model.fit(x, y)

Ошибка получения:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-164-496d8c3b8b48> in <module>
      1 print("Training MLPRegressor...")
----> 2 tic = time()
      3 est = make_pipeline(QuantileTransformer(),
      4                     MLPRegressor(hidden_layer_sizes=(32, 35, 10),
      5                                  learning_rate_init=0.01,

TypeError: 'module' object is not callable

Я не знаю, как это решить.

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Ошибка говорит вам, что time это модуль, а не функция. У вас есть строка, подобная этой, в верхней части вашего скрипта?

import time

Если это так, то для получения текущего времени вы хотите вызвать функцию time в пределах * Модуль 1008 *:

tic = time.time()

Если вы используете mypy, вы можете перехватывать подобные ошибки перед запуском кода. Запуск mypy для кода, который вызывает модуль time, как если бы это была функция, выдает error: Module not callable. Использование макроса reveal_type показывает разницу:

import time

reveal_type(time)       # note: Revealed type is '_importlib_modulespec.ModuleType'
reveal_type(time.time)  # note: Revealed type is 'def () -> builtins.float'

Если единственное, что вам нужно от модуля time, это функция time, то вы можете импортировать эту функцию специально, чтобы в области видимости вашего кода time относится к функции, а не ко всему модулю:

from time import time

reveal_type(time)       # note: Revealed type is 'def () -> builtins.float'
reveal_type(time.time)  # error: "Callable[[], float]" has no attribute "time"

Итак, теперь, когда мы импортировали функцию time непосредственно в нашу область, time() является правильным (потому что time - это функция), а time.time() - нет (поскольку функция time не имеет члена с именем time).

0 голосов
/ 05 апреля 2020

Полагаю, вы хотите отслеживать производительность вашего скрипта с помощью tic=time(), однако вам нужно указать модуль, из которого вы хотите вызвать метод time (), чтобы решить эту проблему, просто вызовите tic = time.time() см. пример ниже

#!/usr/bin/python
import time;  # This is required to include time module.

ticks = time.time()
print "Number of ticks since 12:00am, January 1, 1970:", ticks
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...