1
resposta

Postman dá erro

Fui fazer o request vis post no postman, mas retorna erro:

raise ValueError("Found array with dim %d. %s expected <= 2." ValueError: Found array with dim 3. Estimator expected <= 2.

Eu não entendi que erro é esse ou como resolver

meu código está aexatamente ao seu, mas vou colar aqui:

from flask import Flask, request, jsonify
from textblob import TextBlob
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression


df = pd.read_csv('casas.csv')
colunas = ['tamanho', 'ano', 'garagem']

X = df.drop('preco', axis=1) #variaveis explicativas
y = df['preco'] #variavel resposta

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
modelo = LinearRegression()
modelo.fit(X_train, y_train)

@app.route('/cotacao/', methods=['POST']) 
def cotacao():
    dados = request.get_json()
    dados_input = [dados[col] for col in colunas]
    preco = modelo.predict([[dados_input]])
    return jsonify(preco=preco[0])

app.run(debug=True)
1 resposta

Oii Isabel, como você está?

Peço desculpas pela demora em obter um retorno.

Esse erro está acontecendo por causa da seguinte linha:

preco = modelo.predict([[dados_input]])

O método predict recebe por parâmetro um array uni ou bi dimensional, e nesse caso, por a variável dados_input já ser uma lista, o que está sendo feito é passar como argumento um array tridimensional, por isso do erro. Para corrigí-lo, basta retirar os colchetes ao redor de dados_input, deixando da seguinte forma:

preco = modelo.predict([dados_input])

Após essa correção tente fazer a requisição novamente.

Qualquer dúvida estou por aqui.

Abraços e bons estudos!