#python #azure #machine-learning #scikit-learn #azure-machine-learning-service
#python #azure #машинное обучение #scikit-learn #azure-machine-learning-service
Вопрос:
Я пытаюсь использовать веб-службу, которую я развернул, и получаю ошибку predict () отсутствует 1 требуемый позиционный аргумент: ‘X’, когда я пытаюсь использовать его с конечной точкой REST. Вот ссылка для справки о моих предыдущих вопросах в Microsoft:
Вот мои train.py и score.py
train.py
df = pd.read_csv('prediction_data01.csv')
df = df[pd.notnull(df['DESCRIPTION'])]
df = df[pd.notnull(df['CUSTOMERCODE'])]
col = ['CUSTOMERCODE', 'DESCRIPTION']
df = df[col]
df.columns = ['CUSTOMERCODE', 'DESCRIPTION']
df['category_id'] = df['DESCRIPTION'].factorize()[0]
tfidf = TfidfVectorizer(sublinear_tf=True, min_df=5, norm='l2', encoding='latin-1', ngram_range=(1, 4), stop_words='english')
features = tfidf.fit_transform(df.DESCRIPTION).toarray()
labels = df.category_id
df = df.applymap(str)
X_train, X_test, y_train, y_test = train_test_split(df['CUSTOMERCODE'], df['DESCRIPTION'], random_state=0)
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(X_train)
tfidf_transformer = TfidfTransformer()
X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)
clf = MultinomialNB().fit(X_train_tfidf, y_train)
os.makedirs("./outputs", exist_ok=True)
joblib.dump(clf, 'prediction-model.pickle')
Score.py
def init():
global model
# AZUREML_MODEL_DIR is an environment variable created during deployment.
# It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
# For multiple models, it points to the folder containing all deployed models (./azureml-models)
model_path = os.path.join(os.getenv('AZUREML_MODEL_DIR'), "prediction-model.pickle")
model = joblib.load(model_path)
def run(raw_data):
data = np.array(json.loads(raw_data)['data'])
# make prediction
y_hat = model.predict(data)
# you can return any data type as long as it is JSON-serializable
return y_hat.tolist()
Я протестировал результаты модели локально, и она работает нормально. Я предсказал результаты модели и с помощью приведенного ниже кода.
clf = MultinomialNB().fit(X_train_tfidf, y_train)
with open("prediction.pickle", "wb") as f:
pickle.dump(MultinomialNB, f)
print(clf.predict(count_vect.transform(["18339"])))
Я могу успешно предсказать с помощью приведенного выше кода, а также я могу предсказать при загрузке сохраненного файла выбора модели, используя приведенный ниже код.
pickle_in = open("prediction.pickle", "rb")
Multinomial_model = pickle.load(pickle_in)
clf = Multinomial_model().fit(X_train_tfidf, y_train)
print(clf.predict(count_vect.transform(["18339"])))
Я получаю эту ошибку — fit() отсутствует 1 требуемый позиционный аргумент: ‘y’ — когда я не использую скобки в приведенном выше методе подгонки кода. Я не знаю, помогает ли это.
clf = Multinomial_model.fit(X_train_tfidf, y_train)
Любая помощь приветствуется. Заранее спасибо.