Construir e implementar um sistema de previsão de carros

Conteúdo

Este artigo foi publicado como parte do Data Science Blogathon

Introdução

O Aprendizado de Máquina é um campo da tecnologia que se desenvolve com imensas habilidades e aplicações na automação de tarefas, onde nenhuma intervenção humana ou programação explícita é necessária.

O poder do aprendizado de máquina é tão grande que podemos ver que seus aplicativos estão em alta em quase todos os lugares de nossas vidas diárias.. O ML resolveu muitos problemas que existiam antes e fez com que as empresas no mundo progredissem muito.

Hoje, vamos analisar um desses problemas práticos e criar uma solução (modelo) por conta própria usando ML.

O que há de tão empolgante nisso?

Nós vamos, vamos implementar nosso modelo construído usando aplicativos Flask e Heroku. E ao final, teremos aplicativos da web totalmente funcionais em nossas mãos.

Por que é importante implementar seu modelo?

Os modelos de aprendizado de máquina geralmente visam ser uma solução para um problema ou problemas existentes. E em algum momento da sua vida, você deve ter pensado em como seu modelo seria uma solução e como as pessoas usariam isso? De fato, as pessoas não podem usar seus notebooks e códigos diretamente, e é aí que você precisa implementar seu modelo.

Você pode implementar seu modelo, como uma API ou serviço da web. Aqui, estamos usando a microestrutura Flask. O Flask define um conjunto de restrições para o aplicativo da web enviar e receber dados.

Atenção sistema de previsão de preços

Estamos prestes a implementar um modelo de ML para a previsão e análise de preços de venda de automóveis. Este tipo de sistema é útil para muitas pessoas.

Imagine uma situação em que você tem um carro velho e deseja vendê-lo. Claro, você pode abordar um agente para isso e encontrar o preço de mercado, mas mais tarde você terá que pagar do seu bolso pelo serviço deles ao vender seu carro. Mas, E se você pudesse saber o preço de venda do seu carro sem a intervenção de um agente? Ou se você é um agente, isso definitivamente tornará seu trabalho mais fácil. sim, este sistema já aprendeu sobre os preços de venda anteriores por anos de vários carros.

Então, para ser claros, Esta aplicação web implementada irá fornecer-lhe o preço de venda aproximado do seu carro de acordo com o tipo de combustível, Anos de serviço, o preço do showroom, o número de proprietários anteriores, os quilômetros percorridos, se você é um distribuidor / individual e, finalmente, se o tipo de transmissão é manual / automático. E isso é um brownie point.

Qualquer tipo de modificação também pode ser incorporado posteriormente neste aplicativo. Só é possível depois fazer uma facilidade para atender compradores. Esta é uma boa ideia para um grande projeto que você pode experimentar. Você pode implementar isso como um aplicativo como OLA ou qualquer aplicativo de comércio eletrônico. Os aplicativos de aprendizado de máquina não terminam aqui. Do mesmo modo, existem infinitas possibilidades que você pode explorar. Mas por enquanto, deixe-me ajudá-lo a criar o modelo para previsão do preço do carro e seu processo de implementação.

Importar conjunto de dados

O conjunto de dados está anexado à pasta GitHub. Verifique aqui

Os dados consistem em 300 linhas e 9 colunas. Já que nosso objetivo é encontrar o preço de venda, o atributo de destino e também o preço de venda, as características restantes são tomadas para análise e previsões.

importar numpy como np
importar pandas como pd
data = pd.read_csv(r'C:UsersSURABHIOneDriveDocumentsprojectsdatasetscar.csv ')
data.head()

cars1-8248658

Engenharia de funções

Os dados. corr () vai lhe dar uma ideia da correlação entre todos os atributos no conjunto de dados. Mais recursos correlacionados podem ser removidos, pois podem causar um ajuste excessivo do modelo.

data = data.drop(['Car_Name'], eixo = 1) 
dados['ano atual'] = 2020 dados['no_year'] = dados['ano atual'] - dados['Ano'] 
data = data.drop(['Ano','ano atual'],eixo = 1) 
data = pd.get_dummies(dados,drop_first = True) 
dados = dados[['Preço de venda','Present_Price','Kms_Driven','no_year','Proprietário','Fuel_Type_Diesel','Fuel_Type_Petrol',
'Seller_Type_Individual','Transmission_Manual']]
dados

sistema de previsão de carro |  conjunto de dados
data.corr()
sistema de previsão de carro |  matriz de correlação

A seguir, dividimos os dados em conjuntos de treinamento e teste.

x = data.iloc[:,1:]
y = data.iloc[:,0]

Descubra a importância das funções para eliminar funções indesejadas

A biblioteca extratressregressor permite que você veja a importância dos recursos e, portanto, remover as características menos importantes dos dados. É sempre recomendado remover as funções desnecessárias porque elas podem definitivamente produzir melhores pontuações de precisão.

from sklearn.ensemble import ExtreesRegressor
model = ExtraTreesRegressor()
model.fit(x,e)
model.feature_importances_

importância do recurso

Otimização de hiperparâmetros

Isso é feito para obter os valores ideais para uso em nosso modelo, isso também pode, até certo ponto,

ajuda a obter bons resultados na previsão

n_estimators = [int(x) para x em np.linspace(start = 100, parar = 1200, num = 12)]
max_features = ['auto','sqrt']
max_depth = [int(x) para x em np.linspace(5,30,num = 6)]
min_samples_split = [2,5,10,15,100]
min_samples_leaf = [1,2,5,10]
grade = {'n_estimators': n_estimators,
        'max_features': max_features,
        'profundidade máxima': profundidade máxima,
        'min_samples_split': min_samples_split,
       'min_samples_leaf': min_samples_leaf}
imprimir(rede)

# Produção

{'n_estimators': [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200], 
'max_features': ['auto', 'sqrt'],
'profundidade máxima': [5, 10, 15, 20, 25, 30], 
'min_samples_split': [2, 5, 10, 15, 100], 
'min_samples_leaf': [1, 2, 5, 10]} 

Teste de trem dividido

from sklearn.model_selection import train_test_split #importing train test split module
x_train, x_test,y_train,y_test = train_test_split(x,e,random_state = 0, test_size = 0.2)

Treinando o modelo

Usamos o regressor de floresta aleatório para prever os preços de venda, pois este é um problema de regressão e essa floresta aleatória usa várias árvores de decisão e mostrou bons resultados para meu modelo.

from sklearn.ensemble import RandomForestRegressor model = RandomForestRegressor() 
hyp = RandomizedSearchCV(estimador = modelo,
                        param_distributions = grid,
                        n_iter = 10,
                       pontuação = 'neg_mean_squared_error'
                        cv = 5, detalhado = 2,
                        random_state = 42, n_jobs = 1) 
hip.fit(x_train,y_train)

modelo de sistema de previsão de carro de treinamento

hyp é um modelo criado usando os hiperparâmetros ideais obtidos por meio de validação cruzada de pesquisa aleatória

Produção

Agora finalmente usamos o modelo para prever o conjunto de dados de teste.

y_pred = hyp.predict(x_test)
y_pred

previsões

Para usar a estrutura Flask para implantação, é necessário empacotar todo este modelo e importá-lo para o arquivo Python para criar aplicações web. Portanto, despejamos nosso modelo no arquivo pickle usando o código fornecido.

importar picles
arquivo = aberto("arquivo.pkl", "wb") # abrindo um novo arquivo no modo de escrita
pickle.dump(hip, Arquivo) # despejar o modelo criado em um arquivo de pickle

Código completo

https://github.com/SurabhiSuresh22/Car-Price-Prediction/blob/master/car_project.ipynb

Moldura de frasco

O que precisamos é de um aplicativo da web que contenha um formulário para receber a entrada do usuário e retornar as previsões do modelo. Então, iremos desenvolver uma aplicação web simples para este. A interface é feita usando HTML e CSS simples. Aconselho você a revisar os conceitos básicos de desenvolvimento da web para entender o significado do código escrito para a interface. Também seria ótimo se eu soubesse a moldura do frasco. Cruzar é vídeo se você é novo no FLASK.

Deixa eu te explicar, brevemente, o que codifiquei usando FLASK.

Então, vamos começar o código importando todas as bibliotecas necessárias usadas aqui.

from flask importar Flask, render_template, solicitar
importar picles
pedidos de importação
importar numpy como np

Como você sabe, temos que importar o modelo salvo aqui para fazer previsões a partir dos dados fornecidos pelo usuário. Então, estamos importando o modelo salvo

model = pickle.load(abrir("model.pkl", "rb"))

Agora vamos para o código para criar o aplicativo real do frasco.

app = Flask(_nome_)
@ app.route("/") # isso nos direcionará para a página inicial quando clicarmos no link do nosso aplicativo da web
def casa():
      return render_template("home.html")  # pagina inicial
@ app.route("/prever", métodos = ["PUBLICAR"]) # isso funciona quando o usuário clica no botão de previsão
def prever():
      ano = int(request.form["ano"]) # pegando dados de ano do usuário
      tot_year = 2020 - ano
      present_price = float(request.form["present_price"]) #levando o prêmio presente
      fuel_type = request.form["tipo de combustível"] # tipo de combustível do carro
      # loop if para atribuição de valores numéricos
      if fuel_type == "Gasolina":
            combustível_P = 1
            fuel_D = 0
      outro:
            combustível_P = 0
            fuel_D = 1
      kms_driven = int(request.form["kms_driven"]) # total de quilômetros rodados do carro
      transmissão = solicitação.form["transmissão"] # tipo de transmissão
      # atribuindo valores numéricos
      if transmisson == "Manuel":
            transmissão_manual = 1
      outro:
            transmissão_manual = 0
      seller_type = request.form["vendedor_tipo"] # tipo de vendedor
      if seller_type == "Individual":
             vendedor_individual = 1
      outro:
             vendedor_individual = 0
      owner = int(request.form["proprietário"])  # número de proprietários
      valores = [[
        present_price,
        kms_driven,
        proprietário,
        tot_year,
        fuel_D,
        combustível_P,
        vendedor_individual,
        transmissão_manual
      ]]
      # criou uma lista de todos os valores inseridos pelo usuário, em seguida, usá-lo para a previsão
      prediction = model.predict(valores)
      previsão = rodada(predição[0],2)
      # retornando o valor predito em ordem para exibir no aplicativo da web de front end
      return render_template("home.html", pred = "O preço do carro é {} Lakh".formato(flutuador(predição)))
if _name_ == "_a Principal_":
     app.run(debug = True)

Implementação com Heroku

Tudo que você precisa fazer é conectar seu repositório GitHub contendo todos os arquivos necessários para o projeto com o Heroku. Para todos aqueles que não sabem o que é Heroku, Heroku é uma plataforma que permite aos desenvolvedores criar, executar e operar aplicativos em nuvem.

Este é o link para o aplicativo da web que criei usando a plataforma Heroku. Então, vimos o processo de construção e implementação de um modelo de aprendizado de máquina. Você também pode fazer isso, aprenda mais e sinta-se à vontade para experimentar coisas novas e desenvolvê-las.

https://car-price-analysis-app.herokuapp.com/

84958screenshot20564-4853118

conclusão

Então, vimos o processo de construção e implementação de um modelo de aprendizado de máquina. Você também pode fazer isso, aprenda mais e sinta-se à vontade para experimentar coisas novas e desenvolvê-las. Sinta-se à vontade para se conectar comigo no ligado em.

Obrigado

A mídia mostrada neste artigo não é propriedade da DataPeaker e é usada a critério do autor.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.