In meinem vorherigen Beitrag habe ich ein Skript erstellt, um eine CSV-Datei mit Laptop-Daten zu generieren und dabei Web Scraping in PCComponentes durchzuführen.
Diese Idee entstand, als versucht wurde, ein Modell für maschinelles Lernen zu erstellen, das abhängig von den von Ihnen bereitgestellten Komponenten den Preis des Geräts vorhersagt. Bei der Recherche habe ich jedoch einen öffentlichen DataFrame gefunden, mit dem das Modell trainiert werden konnte, der allerdings ein Problem hatte: Die Preise datierten bis ins Jahr 2015, weshalb er kaum von Nutzen war.
Aus diesem Grund habe ich beschlossen, einen DataFrame direkt von der PCComponentes-Website zu erstellen, der es mir ermöglichen würde, über aktuelle und zuverlässige Daten zu verfügen. Darüber hinaus könnte dieser Prozess in Zukunft automatisiert werden (zumindest bis PCComponentes die Struktur seiner Website ändert).
Lasst uns loslegen!
DataFrame-Datenverarbeitung
Vor dem Training des Modells müssen die Daten organisiert und bereinigt werden, um das Lesen und Verarbeiten zu erleichtern. Hierzu verwenden wir die Bibliotheken Numpy, Pandas und Matplotlib, die in der Datenanalyse und -verarbeitung weit verbreitet sind.
Der erste Schritt besteht darin, diese Bibliotheken zu importieren und die generierte CSV-Datei zu öffnen:
import pandas as pd import numpy as np import matplotlib.pyplot as plt
Dann löschen wir die Zeilen mit leeren oder Nullwerten:
df = df.dropna()
Datenanalyse und Filterung
Beginnen wir mit der Analyse der verschiedenen verfügbaren CPU-Typen. Um sie anzuzeigen, verwenden wir die Seaborn-Bibliothek:
import seaborn as sns sns.countplot(data=df, x='CPU')
Hier sehen wir, dass es 207 verschiedene Arten von CPUs gibt. Das Training eines Modells mit all diesen Werten könnte problematisch sein, da viele Daten irrelevant wären und Rauschen erzeugen würden, das die Leistung beeinträchtigen würde.
Anstatt die gesamte Spalte zu entfernen, filtern wir die relevantesten Werte:
def cpu_type_define(text): text = text.split(' ') if text[0] == 'intel': if 'i' in text[-1]: if text[-1].split('-')[0] == 'i3': return 'low gamma intel processor' return text[0]+' '+text[1]+' '+text[-1].split('-')[0] return 'low gamma intel processor' elif text[0] == 'amd': if text[1] == 'ryzen': if text[2] == '3': return 'low gamma amd processor' return text[0]+' '+text[1]+' '+text[2] return 'low gamma amd processor' elif 'm' in text[0]: return 'Mac Processor' else: return 'Other Processor' data['Cpu'] = data['Cpu'].apply(cpu_type_define) sns.histplot(data=data,x='Cpu') data['Cpu'].value_counts()
Ergebnis:
GPU-Filterung
Wir führen einen ähnlichen Prozess mit Grafikkarten (GPU) durch und reduzieren dabei die Anzahl der Kategorien, um Rauschen in den Daten zu vermeiden:
def gpu_type_define(text): if 'rtx' in text: num = int(''.join([char for char in text if char.isdigit()])) if num == 4080 or num == 4090 or num == 3080: return 'Nvidia High gamma' elif num == 4070 or num == 3070 or num == 4060 or num == 2080: return 'Nivida medium gamma' elif num == 3050 or num == 3060 or num == 4050 or num == 2070: return 'Nvidia low gamma' else: return 'Other nvidia grafic card' elif 'radeon' in text: if 'rx' in text: return 'Amd High gamma' else: return 'Amd low Gamma' elif 'gpu' in text: return 'Apple integrated graphics' return text data['Gpu'] = data['Gpu'].apply(gpu_type_define) sns.histplot(data=data,x='Gpu') data['Gpu'].value_counts()
Ergebnis:
Speicher- und RAM-Behandlung
Um die Speicherdaten zu vereinfachen, fassen wir den Gesamtspeicherplatz aller Festplatten zu einem einzigen Wert zusammen:
def fitler_ssd(text): two_discs = text.split('+') if len(two_discs) == 2: return int(''.join([char for char in two_discs[0] if char.isdigit()])) + int(''.join([char for char in two_discs[1] if char.isdigit()])) else: return int(''.join([char for char in text if char.isdigit()])) data['SSD'] = data['SSD'].str.replace('tb','000') data['SSD'] = data['SSD'].str.replace('gb','') data['SSD'] = data['SSD'].str.replace('emmc','') data['SSD'] = data['SSD'].str.replace('ssd','')
Zuletzt filtern wir die RAM-Werte, um nur Zahlen beizubehalten:
import pandas as pd import numpy as np import matplotlib.pyplot as plt
Nicht-numerische Datenkodierung
Vor dem Training des Modells müssen die nicht numerischen Spalten in Daten umgewandelt werden, die der Algorithmus interpretieren kann. Hierzu verwenden wir den ColumnTransformer und OneHotEncoder aus der sklearn-Bibliothek:
df = df.dropna()
Modelltraining
Ich habe mehrere Algorithmen für maschinelles Lernen getestet, um festzustellen, welcher gemäß dem Bestimmtheitsmaß (R2-Score) am effizientesten war. Hier sind die Ergebnisse:
Modelo | R2 Score |
---|---|
Logistic Regression | -4086280.26 |
Random Forest | 0.8025 |
ExtraTreeRegressor | 0.7531 |
GradientBoostingRegressor | 0.8025 |
XGBRegressor | 0.7556 |
Die besten Ergebnisse wurden mit Random Forest und GradientBoostingRegressor erzielt, beide mit einem R2 nahe 1.
Um mich weiter zu verbessern, habe ich diese Algorithmen mit einem Abstimmungsregressor kombiniert und einen R2-Score von 0,8085 erreicht:
import seaborn as sns sns.countplot(data=df, x='CPU')
Abschluss
Das mit dem Voting Regressor trainierte Modell war am effizientesten. Jetzt sind Sie bereit, es in eine Webanwendung zu integrieren, was ich im nächsten Beitrag ausführlich erläutern werde.
Link zum Projekt
Das obige ist der detaillierte Inhalt vonLaptop-Preisvorhersage mit ML. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

ForHandlinglargedatasetsinpython, Usenumpyarraysforbetterperformance.1) Numpyarraysarememory-Effiction und FasterFornumericaloperations.2) meidenunnötiger Anbieter.3) HebelVectorisationFecedTimeComplexity.4) ManagemememoryusageSageWithEffizienceDeffictureWitheseffizienz

Inpython, listEUSUutsynamicMemoryAllocationWithover-Accocation, whilenumpyarraysalcodeFixedMemory.1) ListSallocatemoremoryThanneded intellig, vereitelte, dass die sterbliche Größe von Zeitpunkte, OfferingPredictableSageStoageStloseflexeflexibilität.

Inpython, youcansspecthedatatypeyFelemeremodelerernspant.1) Usenpynernrump.1) Usenpynerp.dloatp.Ploatm64, Formor -Präzise -Preciscontrolatatypen.

NumpyisessentialfornumericalComputingInpythonduetoitsSpeed, GedächtnisEffizienz und kompetentiertemaMatematical-Funktionen.1) ITSFACTBECAUSPERFORMATIONSOPERATIONS.2) NumpyarraysSaremoremory-Effecthonpythonlists.3) iTofferSAgyarraysAremoremory-Effizieren

ContInuuousMemoryAllocationScrucialforAraysBecauseAltoLowsFofficy und Fastelement Access.1) iTenablesconstantTimeAccess, O (1), Duetodirectaddresscalculation.2) itimProvesefficienceByallowing -MultipleTeLementFetchesperCacheline.3) Es wird gestellt

SlicingPapythonListisDoneUsingthesyntaxlist [Start: Stop: Stufe] .here'Showitworks: 1) StartIndexoFtheFirstelementtoinclude.2) stopiStheIndexoFtheFirstelementtoexclude.3) StepisTheincrementBetweenelesfulFulForForforexcractioningPorporionsporporionsPorporionsporporesporsporsporsporsporsporsporsporsporionsporsPorsPorsPorsPorsporsporsporsporsporsporsAntionsporsporesporesporesporsPorsPorsporsPorsPorsporsporspors,

Numpyallowsforvariousoperationssonarrays: 1) BasicarithmeticliKeaddition, Subtraktion, Multiplikation und Division; 2) AdvancedoperationssuchasmatrixMultiplication;

Arraysinpython, insbesondere ThroughNumpyandpandas, areessentialfordataanalyse, öfterspeedandeffizienz.1) numpyarraysenableAnalysHandlingoflargedatasets und CompompexoperationslikemovingAverages.2) Pandasextendsnumpy'ScapaBilitiesWithDaTataforsForstruc


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft
