Erstellen und implementieren Sie ein Autovorhersagesystem

Inhalt

Dieser Artikel wurde im Rahmen der Data Science Blogathon

Einführung

Machine Learning ist ein Technologiefeld, das mit immensen Fähigkeiten und Anwendungen in der Automatisierung von Aufgaben entwickelt wird, wo kein menschliches Eingreifen oder explizite Programmierung erforderlich ist.

Die Leistungsfähigkeit des maschinellen Lernens ist so groß, dass wir sehen können, dass seine Anwendungen in unserem täglichen Leben fast überall im Trend liegen.. ML hat viele Probleme gelöst, die es zuvor gab, und Unternehmen in der Welt große Fortschritte gemacht.

Heute, Wir werden eines dieser praktischen Probleme analysieren und eine Lösung finden (Modell) auf eigene Faust mit ML.

Was ist daran so spannend?

Gut, Wir werden unser Modell implementieren, das mit Flask- und Heroku-Anwendungen erstellt wurde. Am Ende, wir werden voll funktionsfähige Webanwendungen in unseren Händen haben.

Warum ist es wichtig, Ihr Modell zu implementieren?

Modelle des maschinellen Lernens zielen im Allgemeinen darauf ab, eine Lösung für ein oder mehrere bestehende Probleme zu sein. Und irgendwann in deinem Leben, Sie müssen sich gedacht haben, wie wäre Ihr Modell eine Lösung und wie würden die Leute dies verwenden?? Eigentlich, Leute können ihre Notizbücher und ihren Code nicht direkt verwenden, und hier müssen Sie Ihr Modell implementieren.

Sie können Ihr Modell implementieren, als API oder Webservice. Hier verwenden wir das Flask Micro-Framework. Flask definiert eine Reihe von Einschränkungen für die Webanwendung zum Senden und Empfangen von Daten.

Achtung Preisvorhersagesystem

Wir sind dabei, ein ML-Modell zur Vorhersage und Analyse von Autoverkaufspreisen zu implementieren. Diese Art von System ist für viele Menschen nützlich.

Stellen Sie sich eine Situation vor, in der Sie ein altes Auto haben und es verkaufen möchten. Natürlich, Sie können sich dafür an einen Makler wenden und den Marktpreis ermitteln, aber später musst du für ihren Service beim Verkauf deines Autos aus Taschengeld bezahlen. Aber, Was ist, wenn Sie den Verkaufspreis Ihres Autos ohne die Intervention eines Agenten herausfinden können?? Oder wenn Sie ein Agent sind, das wird dir die Arbeit auf jeden Fall erleichtern. Jawohl, dieses System hat schon seit Jahren die bisherigen Verkaufspreise diverser Autos kennengelernt.

Dann, deutlich sein, Diese implementierte Webanwendung liefert Ihnen den ungefähren Verkaufspreis Ihres Autos je nach Kraftstoffart, Dienstjahre, der preis des ausstellungsraums, die Anzahl der Vorbesitzer, die gefahrenen Kilometer, wenn Sie ein Händler sind / individuell und schließlich, wenn die Art der Übertragung manuell ist / automatisch. Und das ist ein Brownie-Punkt.

Jede Art von Modifikation kann auch später in diese Anwendung eingearbeitet werden. Es ist nur möglich, später eine Einrichtung zu machen, um Käufer zu treffen. Dies ist eine gute Idee für ein großartiges Projekt, das Sie ausprobieren können. Sie können dies als Anwendung wie OLA oder eine beliebige E-Commerce-Anwendung implementieren. Anwendungen für maschinelles Lernen enden hier nicht. Auf die gleiche Weise, Es gibt endlose Möglichkeiten, die Sie erkunden können. Aber für den Moment, Lassen Sie mich Ihnen helfen, das Modell für die Autopreisvorhersage und den Implementierungsprozess zu erstellen.

Datensatz importieren

Der Datensatz ist im GitHub-Ordner angehängt. Überprüfe hier

Die Daten bestehen aus 300 Reihen und 9 Säulen. Denn unser Ziel ist es, den Verkaufspreis zu finden, das Zielattribut und ist auch der Verkaufspreis, die restlichen Merkmale werden für Analysen und Vorhersagen verwendet.

numpy als np importieren
Pandas als pd importieren
data = pd.read_csv(r'C:BenutzerSURABHIOneDriveDocumentsprojectsdatasetscar.csv')
daten.kopf()

Autos1-8248658

Funktionsengineering

Die Daten. korr () es gibt Ihnen eine Vorstellung von der Korrelation zwischen allen Attributen im Datensatz. Weitere korrelierte Funktionen können entfernt werden, da sie eine übermäßige Passform des Modells verursachen können.

data = data.drop(['Autoname'], Achse=1) 
Daten['laufendes Jahr'] = 2020 Daten['kein_Jahr'] = Daten['laufendes Jahr'] - Daten['Jahr'] 
data = data.drop(['Jahr','laufendes Jahr'],Achse = 1) 
data = pd.get_dummies(Daten,drop_first=Wahr) 
Daten = Daten[['Verkaufspreis','Gegenwärtiger_Preis','Kms_gefahren','kein_Jahr','Eigentümer','Fuel_Type_Diesel','Fuel_Type_Petrol',
'Seller_Type_Individual','Transmission_Manual']]
Daten

Autovorhersagesystem |  Datensatz
daten.korr()
Autovorhersagesystem |  Korrelationsmatrix

Dann, wir teilen die Daten in Trainings- und Test-Sets auf.

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

Entdecken Sie die Bedeutung von Funktionen, um unerwünschte Funktionen zu eliminieren

Die extratressregressor-Bibliothek ermöglicht es Ihnen, die Bedeutung von Funktionen zu erkennen und, Daher, Entfernen Sie die weniger wichtigen Merkmale der Daten. Es wird immer empfohlen, unnötige Funktionen zu entfernen, da sie definitiv bessere Genauigkeitsergebnisse erzielen können.

von sklearn.ensemble importieren ExtreesRegressor
model = ExtraTreesRegressor()
model.fit(x,Ja)
model.feature_importances_

Merkmal Bedeutung

Hyperparameter-Optimierung

Dies geschieht, um die optimalen Werte für den Einsatz in unserem Modell zu erhalten, das kann teilweise auch

helfen, gute Vorhersageergebnisse zu erzielen

n_Schätzer = [int(x) für x in np.linspace(beginnen = 100, Stopp = 1200,num = 12)]
max_features = ['Auto','sqrt']
max_tiefe = [int(x) für x in np.linspace(5,30,Zahl = 6)]
min_samples_split = [2,5,10,15,100]
min_samples_leaf = [1,2,5,10]
Gitter = {'n_Schätzer': n_Schätzer,
        'max_features': max_features,
        'maximale Tiefe': maximale Tiefe,
        'min_samples_split': min_samples_split,
       'min_samples_leaf': min_samples_leaf}
drucken(Netz)

# Produktion

{'n_Schätzer': [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200], 
'max_features': ['Auto', 'sqrt'],
'maximale Tiefe': [5, 10, 15, 20, 25, 30], 
'min_samples_split': [2, 5, 10, 15, 100], 
'min_samples_leaf': [1, 2, 5, 10]} 

Split-Zug-Test

from sklearn.model_selection import train_test_split #Importieren des Zugtest-Split-Moduls
x_train, x_test,y_train,y_test = train_test_split(x,Ja,random_state=0,test_size=0.2)

Modell trainieren

Wir haben den Random Forest Regressor verwendet, um Verkaufspreise vorherzusagen, da dies ein Regressionsproblem ist und dieser Random Forest mehrere Entscheidungsbäume verwendet und gute Ergebnisse für mein Modell gezeigt hat.

from sklearn.ensemble import RandomForestRegressor model = RandomForestRegressor() 
hyp = RandomizedSearchCV(Schätzer = Modell,
                        param_distributions=Gitter,
                        n_iter=10,
                       Scoring = 'neg_mean_squared_error'
                        cv=5, ausführlich = 2,
                        random_state = 42,n_jobs = 1) 
hyp.fit(x_train,y_train)

Modell des Trainingswagenvorhersagesystems

hyp ist ein Modell, das unter Verwendung der optimalen Hyperparameter erstellt wurde, die durch eine Kreuzvalidierung mit zufälliger Suche erhalten wurden

Produktion

Jetzt verwenden wir das Modell endlich, um den Testdatensatz vorherzusagen.

y_pred = hyp.predict(x_test)
y_pred

Vorhersagen

So verwenden Sie das Flask-Framework für die Bereitstellung, Es ist notwendig, all dieses Modell zu packen und in eine Python-Datei zu importieren, um Webanwendungen zu erstellen. Deswegen, Wir legen unser Modell mit dem angegebenen Code in die Pickle-Datei.

Essiggurke importieren
Datei = öffnen("file.pkl", "wb") # Öffnen einer neuen Datei im Schreibmodus
pickle.dump(hyp, Datei) # Dumping des erstellten Modells in eine Pickle-Datei

Vollständiger Code

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

Flaschenrahmen

Was wir brauchen, ist eine Webanwendung, die ein Formular enthält, um die Benutzereingaben aufzunehmen und die Vorhersagen des Modells zurückzugeben. Dann, wir werden dafür eine einfache Webanwendung entwickeln. Die Schnittstelle wird mit einfachem HTML und CSS erstellt. Ich empfehle Ihnen, die Grundlagen der Webentwicklung zu überprüfen, um die Bedeutung des Codes zu verstehen, der für die Schnittstelle geschrieben wurde. Es wäre auch toll, wenn ich den Rahmen der Flasche wüsste. Kreuz ist Video wenn Sie neu bei FLASK . sind.

Lass mich dir erklären, knapp, was ich mit FLASK codiert habe.

Dann, Beginnen wir den Code, indem wir alle hier verwendeten Bibliotheken importieren.

aus Flaschenimport Flasche, render_template, Anfrage
Essiggurke importieren
Importanfragen
numpy als np importieren

Woher weißt du das, wir müssen das gespeicherte Modell hier importieren, um die Vorhersagen der vom Benutzer bereitgestellten Daten zu treffen. Wir importieren also das gespeicherte Modell

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

Gehen wir nun zum Code, um die eigentliche Kolbenanwendung zu erstellen.

app = Flasche(_Name_)
@app.route("/") # Dies führt uns zur Startseite, wenn wir auf unseren Web-App-Link klicken
auf jeden Fall zu Hause():
      render_template zurückgeben("home.html")  # Startseite
@app.route("/Vorhersagen", Methoden = ["POST"]) # Dies funktioniert, wenn der Benutzer auf die Vorhersageschaltfläche klickt
auf jeden Fall vorhersagen():
      Jahr = int(Anfrage.Formular["Jahr"]) # Jahreseingabe vom Benutzer nehmen
      tot_year = 2020 - Jahr
      present_price = float(Anfrage.Formular["Geschenkpreis"]) #den gegenwärtigen Preis entgegennehmen
      Fuel_type = request.form["Treibstoffart"] # Kraftstoffart des Autos
      # if-Schleife zum Zuweisen von Zahlenwerten
      wenn Kraftstofftyp == "Benzin":
            Kraftstoff_P = 1
            Kraftstoff_D = 0
      anders:
            Kraftstoff_P = 0
            Kraftstoff_D = 1
      kms_driven = int(Anfrage.Formular["kms_driven"]) # gefahrene Gesamtkilometer des Autos
      Übertragung = Anfrage.Formular["Übertragung"] # Übertragungsart
      # Zahlenwerte zuweisen
      wenn Übertragung == "Manuel":
            Transmission_manual = 1
      anders:
            Transmission_manual = 0
      Seller_type = request.form["Verkäufertyp"] # Verkäufertyp
      if seller_type == "Individuell":
             Seller_individual = 1
      anders:
             Seller_individual = 0
      Eigentümer = int(Anfrage.Formular["Eigentümer"])  # Anzahl der Besitzer
      Werte = [[
        Geschenkpreis,
        kms_driven,
        Eigentümer,
        tot_year,
        Kraftstoff_D,
        Kraftstoff_P,
        verkäufer_individuell,
        getriebe_manual
      ]]
      # eine Liste aller vom Benutzer eingegebenen Werte erstellt, dann benutze es für die Vorhersage
      Vorhersage = model.predict(Werte)
      Vorhersage = Runde(Vorhersage[0],2)
      # Rückgabe des vorhergesagten Werts zur Anzeige in der Front-End-Webanwendung
      render_template zurückgeben("home.html", pred = "Autopreis ist {} Lakh".Format(schweben(Vorhersage)))
wenn _name_ == "_hauptsächlich_":
     app.run(debuggen = wahr)

Umsetzung mit Heroku

Alles, was Sie tun müssen, ist Ihr GitHub-Repository, das alle für das Projekt benötigten Dateien enthält, mit Heroku zu verbinden. Für alle die nicht wissen was Heroku ist, Heroku ist eine Plattform, auf der Entwickler erstellen können, Cloud-Anwendungen ausführen und betreiben.

Dies ist der Link zu der Webanwendung, die ich mit der Heroku-Plattform erstellt habe. Dann, Wir haben den Prozess des Aufbaus und der Implementierung eines Modells für maschinelles Lernen gesehen. Kannst du auch machen, Erfahren Sie mehr und fühlen Sie sich frei, neue Dinge auszuprobieren und zu entwickeln.

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

84958Screenshot20564-4853118

Fazit

Dann, Wir haben den Prozess des Aufbaus und der Implementierung eines Modells für maschinelles Lernen gesehen. Kannst du auch machen, Erfahren Sie mehr und fühlen Sie sich frei, neue Dinge auszuprobieren und zu entwickeln. Fühlen Sie sich frei, mit mir in Verbindung zu treten verlinkt in.

Vielen Dank

Die in diesem Artikel gezeigten Medien sind nicht Eigentum von DataPeaker und werden nach Ermessen des Autors verwendet.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.