A laptop with the Python download webpage open on Chrome.
Agence web » Actualités du digital » Ce code Python pourrait vous éviter de dépenser trop pour votre prochain ordinateur portable

Ce code Python pourrait vous éviter de dépenser trop pour votre prochain ordinateur portable

Si vous pensez à un nouvel ordinateur portable, vous vous demandez peut-être combien vous devriez en payer un. Vous pouvez parcourir les sites Web, mais un code Python et une petite régression linéaire pourraient faciliter le travail.

Pourquoi construire un prédicteur de prix d'ordinateur portable?

Vous pouvez rechercher des milliers de pages et parcourir dans les magasins physiques, mais cela prendrait beaucoup de temps. J'aime les ordinateurs, mais je n'ai pas le temps ou l'inclinaison pour cette tâche. J'ai d'autres choses que je préfère faire. Je voudrais avoir un programme que je peux saisir des spécifications comme la quantité de RAM que je veux ou la résolution d'écran dont j'ai besoin et la faire baisser un prix.

Il y a tellement de machines sur le marché qu'il serait difficile pour moi de calculer toutes ces informations à la main. Je pensais également que partager ces informations avec d'autres personnes qui pourraient être sur le marché pour un nouvel ordinateur portable pourrait être utile. Qui veut trop payer pour une machine? Je ne le fais pas, et je peux deviner que vous ne le faites probablement pas non plus.

En rapport

Je refuse d'acheter un ordinateur portable sans ces 10 fonctionnalités

Je ne demande pas grand-chose; Ces fonctionnalités doivent être standard.

Avec ma connaissance de la régression linéaire des statistiques, j'ai réalisé que je pouvais facilement construire un modèle pour répondre à ces questions. Python est une grande langue, et j'avais déjà une certaine familiarité de base avec elle. Il est devenu populaire dans l'analyse des données, car il est assez simple pour les personnes sans arrière-plan informatiques de reprendre mais propose des bibliothèques puissantes pour analyser les données.

Pour ce projet, j'ai utilisé des morceaux de l'écosystème statistique Python avec lequel j'étais déjà à l'aise.

J'avais déjà créé un environnement de mamba avec ces outils. Alors que de nombreux systèmes, y compris Linux, incluent Python, il est destiné à prendre en charge le système et moins pour les programmes utilisateur. Si vous mettez à niveau le système Python, vous pouvez constater que les scripts qui en dépendent se cassent. Il existe des outils pour installer des environnements personnalisés comme VirtualEnv.

Le premier composant est Numpy. Il s'agit d'une bibliothèque populaire pour toutes sortes d'opérations numériques, en particulier des calculs d'algèbre statistiques et linéaires qui se produiront en arrière-plan.

La prochaine bibliothèque dont vous aurez besoin est Pandas, ce qui vous permettra d'importer l'ensemble de données et de les afficher dans des colonnes comme une «trame de données». C'est un peu comme un croisement entre une base de données relationnelle et une feuille de calcul. Vous pouvez également faire des manipulations puissantes sur vos données.

SeaBorn est une bibliothèque pour visualiser les parcelles de données statistiques. Je l'utilise pour visualiser les distributions de données dans les histogrammes, les diagrammes de dispersion et les régressions linéaires.

En rapport

Comment j'explore et visualise les données avec Python et SeaBorn

Faire des intrigues est plus facile et mieux que vous ne le pensez avec Seaborn.

Enfin, Pingouin me permet d'effectuer facilement de nombreux tests statistiques, sans avoir à mémoriser toutes ces formules que j'ai oubliées dans mon cours de statistique universitaire il y a des années. Il s'agit du programme qui créera le modèle grâce à une régression linéaire multiple du prix de détail par rapport à tous les attributs d'ordinateur portable.

Assurer tout cela est simple dans la plupart des environnements de type Unix, y compris Windows à l'aide du sous-système Windows pour Linux. Vous pouvez suivre les instructions sur la page Web pour l'installer.

Les cahiers Jupyter fournissent un moyen relativement convivial pour exécuter les commandes Python et afficher les résultats, ainsi que stocker les résultats pour plus tard, mais il est strictement facultatif. J'ai créé un cahier Jupyter et je vais en démontrer des exemples de code. Je l'ai publié sur mon github, afin que vous puissiez voir le code et quelques exemples que je n'ai pas pu couvrir dans cet article.

Avec Mamba installé, vous pouvez créer un environnement dont vous avez besoin. Comme un spectacle de cuisine, j'en avais déjà un. Pour l'activer, je tape ceci sur la coque Linux:

        
mamba activate stats

Acquérir les données de l'ordinateur portable

Pour construire l'ensemble de données pour le modèle de régression, je pouvais parcourir les magasins Internet et construire une base de données complète d'ordinateurs portables. Cela prendrait beaucoup de temps à s'accumuler, ainsi qu'à nettoyer les données afin que ce soit cohérent. Heureusement, quelqu'un l'a déjà fait.

Il existe une base de données d'ordinateurs portables avec certaines spécifications matérielles comme la vitesse du processeur, la quantité de RAM, la quantité de stockage et les résolutions d'écran horizontales et verticales disponibles sur Kaggle.

Le prix des ordinateurs portables était en Euros, mais un contrôle rapide sur XE.com en juillet 2025 a montré que le taux de change entre les euros et les dollars américains est assez proche.

Construire le modèle de régression

Avec l'environnement assemblé et les données acquises, il est maintenant temps de construire le modèle. Tout d'abord, je dois importer les bibliothèques que je vais utiliser.

        
import numpy as np
import pandas as pd
import seaborn as sns
%matplotlib inline
import pingouin as pg

Ces lignes importent les bibliothèques Numpy, Pandas, Seaborn et Pingouin. Numpy, Pandas, Seaborn et Pinguoin, sont raccourcis en « NP, PD, SNS et PG ». La ligne qui commence par « % » est destinée à une utilisation dans un cahier de jupyter. Il lui dit d'utiliser la bibliothèque Matplotlib qui dessine les parcelles pour les afficher dans le cahier Jupyter. Sinon, ils seront affichés comme une fenêtre séparée.

Ensuite, nous importerons les données avec Pandas:

        
laptops = pd.read_csv("data/laptop_prices.csv")

Cela créera un cadre de données Pandas. Nous pouvons voir comment les données sont présentées avec la méthode Head ():

        
laptops.head()

Nous pouvons également voir des statistiques descriptives de base de toutes les colonnes numériques avec la méthode décrites ().

        
laptops.describe()

Cela montrera la moyenne, la médiane, l'écart type, la valeur minimale, le quartile inférieur ou le 25e centile, la médiane, le quartile supérieur ou le 75e centile, et la valeur maximale de chaque colonne.

J'aime également visualiser les distributions des données via des histogrammes. Le déplacement de Seaborn fait cela.

Pour voir comment les prix sont distribués:

        sns.displot(x='Price_euros',data=laptops)
    

Cela indique à Pingouin de tracer les prix le long de l'axe X et d'utiliser le portable DataFrame comme source. La queue de la distribution est sensiblement biaisée vers la droite.

Nous allons construire un modèle qui utilise diverses spécifications. Ça ressemblera à ceci:

Prix ​​= A (vitesse du CPU) + B (RAM) + C (taille en pouces) …

Les lettres sont des stand-ins pour les coefficients définis par la régression. Il est similaire à une régression linéaire simple que vous avez peut-être vue, mais au lieu d'adapter une ligne sur un diagramme de dispersion, vous installez un avion. Puisqu'il y a plus de trois dimensions dans ce modèle, c'est en fait un hyperplan.

Pour obtenir la régression du prix en euros par rapport à la taille de l'ordinateur portable, à la vitesse du processeur, à la taille de l'écran, au poids, au stockage primaire et au stockage secondaire, utilisez la fonction de régression linéaire de Pingouin:

pg.linear_regression(laptops(('Inches','Ram','Weight','ScreenW','ScreenH','CPU_freq','PrimaryStorage','SecondaryStorage')),laptops('Price_euros'),relimp=True)

Cela nous donnera les coefficients de cette équation de régression. L'option Relimp = indiquera à Pingouin de calculer combien chaque variable contribue au prix. Les coefficients seront affichés dans la colonne la plus à gauche, la colonne à l'extrême droite nous disant que RAM est le plus grand prédicteur du prix. Le nombre auquel prêter attention en déterminant à quel point un ajustement est le carré du coefficient de corrélation, qui est « R2 » dans ce tableau. C'est autour de .66, ce qui signifie que c'est un assez bon ajustement.

Avec les coefficients prévus, nous pouvons désormais brancher des valeurs sur l'équation pour prédire le prix. Voici une fonction qui fait exactement cela:

def price(inches,ram,weight,screenw,screenh,cpu_freq,primary_storage,secondary_storage):

return 77.11 + -69.81*inches + 77.89*ram + 92.04*ram + 0.04*screenw + 0.59*screenh + 284.51 - 0.21*primary_storage + -0.04 * secondary_storage

Vous devriez mettre en place la deuxième ligne, mais les limites de notre système me demandent de la présenter de cette façon.

Les prix diffèrent-ils vraiment entre les marques?

Ce modèle de régression ne regarde que les spécifications. Vous vous demandez peut-être si le prix est vraiment un prédicteur de prix. Nous pouvons utiliser l'analyse de la variance, ou ANOVA, pour déterminer si les différences entre les marques sont significatives. Parce que les données de prix ont été biaisées, comme on le voit avec l'histogramme, un test non paramétrique sera plus précis. Pingouin a un test de Kruskal-Wallis qui le fait.

Cela testera l'hypothèse nulle qu'il n'y a pas de relation entre le prix et la marque:

        pg.kruskal(data=laptops,dv='Price_euros',between='Company').round(2)
    

La valeur p est de 0, ce qui signifie que ce prix est en effet significatif. L'arrondi a été fait pour rendre la valeur p plus apparente. Sinon, il sera montré en notation scientifique. Cela signifie que nous pouvons rejeter l'hypothèse nulle et conclure que la marque est un prédicteur de prix.


J'ai pu construire un prédicteur de prix pour m'aider à décider de ce qu'un prix juste à payer pour une machine serait basé sur ses spécifications, et un autre pour déterminer la marque importante. Cela montre la puissance de Python et de ses bibliothèques pour faire quelque chose qui aurait pu être difficile à faire à la main réductible à quelques lignes de code.

★★★★★