Πολυπαραγοντική Επιστροφή Μηχανικής Εκμάθησης

Πολυπαραγοντική ανάλυση (Multiple Regression)

Πολυπαραγοντική ανάλυση είναι όπως η γραμμική ανάλυση, αλλά έχει πολλαπλά ανεξάρτητα στοιχεία, αυτό σημαίνει ότι προσπαθούμε να προβλέψουμε μια τιμή βασισμένη σε δύο ή περισσότερους μεταβλητούς.

Παρακαλώ δείτε τον παρακάτω πίνακα δεδομένων, ο οποίος περιέχει πληροφορίες για αυτοκίνητα.

Car Model Volume Weight CO2
Toyota Aygo 1000 790 99
Mitsubishi Space Star 1200 1160 95
Skoda Citigo 1000 929 95
Fiat 500 900 865 90
Mini Cooper 1500 1140 105
VW Up! 1000 929 105
Skoda Fabia 1400 1109 90
Mercedes A-Class 1500 1365 92
Ford Fiesta 1500 1112 98
Audi A1 1600 1150 99
Hyundai I20 1100 980 99
Suzuki Swift 1300 990 101
Ford Fiesta 1000 1112 99
Honda Civic 1600 1252 94
Hundai I30 1600 1326 97
Opel Astra 1600 1330 97
BMW 1 1600 1365 99
Mazda 3 2200 1280 104
Skoda Rapid 1600 1119 104
Ford Focus 2000 1328 105
Ford Mondeo 1600 1584 94
Opel Insignia 2000 1428 99
Mercedes C-Class 2100 1365 99
Skoda Octavia 1600 1415 99
Volvo S60 2000 1415 99
Mercedes CLA 1500 1465 102
Audi A4 2000 1490 104
Audi A6 2000 1725 114
Volvo V70 1600 1523 109
BMW 5 2000 1705 114
Mercedes E-Class 2100 1605 115
Volvo XC70 2000 1746 117
Ford B-Max 1600 1235 104
BMW 2 1600 1390 108
Opel Zafira 1600 1405 109
Mercedes SLK 2500 1395 120

我们可以根据发动机排量的大小预测汽车的二氧化碳排放量,但是通过多元回归,我们可以引入更多变量,例如汽车的重量,以使预测更加准确。

工作原理

Μπορούμε να προβλέψουμε την εκπομπή CO2 ενός αυτοκινήτου με βάση το όγκο του κινητήρα, αλλά μέσω πολυπαραγοντικής ανατροφοδότησης, μπορούμε να εισάγουμε περισσότερους δείκτες, όπως το βάρος του αυτοκινήτου, για να κάνουμε την πρόβλεψη πιο ακριβή.

import pandas

Μέθοδος λειτουργίας

Στο Python, έχουμε τα μοντέλα που μπορούν να εκτελέσουν αυτή τη δουλειά. Πρώτα εισάγετε το μοντέλο Pandas:Το μοντέλο Pandas επιτρέπει την ανάγνωση αρχείων csv και την επιστροφή ενός αντικειμένου DataFrame.

df = pandas.read_csv("cars.csv")

Αυτό το αρχείο χρησιμοποιείται μόνο για σκοπούς δοκιμών, μπορείτε να το κατεβάσετε εδώ:

cars.csv

X = df[['Weight', 'Volume']]
y = df['CO2']

Στη συνέχεια, αναγράψτε τις ανεξάρτητες τιμές και ονομάστε τη μεταβλητή αυτή X.Τοποθετήστε τις σχετικές τιμές σε μια μεταβλητή με το όνομα y. Πρόταση:Γενικά, η λίστα των ανεξάρτητων τιμών θα ονομαστεί με κεφαλαία Xκαι θα ονομάσουμε τη λίστα των σχετικών τιμών με πεζά

y

from sklearn import linear_model

Θα χρησιμοποιήσουμε μερικές μεθόδους από το μοντέλο sklearn, οπότε πρέπει να εισάγουμε αυτό το μοντέλο: Στο μοντέλο sklearn, θα χρησιμοποιήσουμε LinearRegression()

Το αντικείμενο έχει μια μέθοδο fit() Με τον τρόπο

regr = linear_model.LinearRegression()
regr.fit(X, y)

Τώρα, έχουμε έναν αντικειμενοποιημένο αντικειμενικό που μπορεί να προβλέψει τις τιμές CO2 με βάση το βάρος και τον όγκο του αυτοκινήτου:

# Προσομοίωση της εκπομπής CO2 για αυτοκίνητο με βάρος 2300kg και όγκο 1300ccm:
predictedCO2 = regr.predict([[2300, 1300]])

Παράδειγμα

Δείτε το πλήρες παράδειγμα:

import pandas
from sklearn import linear_model
df = pandas.read_csv("cars.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
regr = linear_model.LinearRegression()
regr.fit(X, y)
# Προσομοίωση της εκπομπής CO2 για αυτοκίνητο με βάρος 2300kg και όγκο 1300ccm:
predictedCO2 = regr.predict([[2300, 1300]])
print(predictedCO2)

Αποτελέσματα:

[107.2087328]

Εκτέλεση Εισήγηση

Προβλέπουμε ότι ένα αυτοκίνητο με κινητήρα 1.3 λίτρα και βάρος 2300 κιλών, εκπέμπει περίπου 107 γραμμάρια διοξειδίου του άνθρακα για κάθε χιλιόμετρο.

Συντελεστές

Οι συντελεστές είναι οι παράγοντες που περιγράφουν τη σχέση με την άγνωστη μεταβλητή.

Παράδειγμα: αν x Είναι η μεταβλητή, τότε 2x Είναι x διπλάς.x Είναι η άγνωστη μεταβλητή, ο αριθμός 2 Είναι συντελεστές.

Σε αυτή την περίπτωση, μπορούμε να ζητήσουμε τους συντελεστές του βάρους σε σχέση με το CO2, καθώς και τους συντελεστές του όγκου σε σχέση με το CO2. Η απάντηση που λαμβάνουμε μας λέει τι θα συμβεί αν αυξήσουμε ή μειώσουμε έναν από τους ανεξάρτητους δείκτες.

Παράδειγμα

Εκτύπωση των τιμών των συντελεστών του αντικειμένου της ανατροφοδότησης:

import pandas
from sklearn import linear_model
df = pandas.read_csv("cars.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
regr = linear_model.LinearRegression()
regr.fit(X, y)
print(regr.coef_)

Αποτελέσματα:

[0.00755095 0.00780526]

Εκτέλεση Εισήγηση

Επεξήγηση των αποτελεσμάτων

Το σύνολο των αποτελεσμάτων δείχνει τις τιμές των συντελεστών του βάρους και του όγκου.

Βάρος: 0.00755095
Όγκος: 0.00780526

Αυτές οι τιμές μας πληροφορούν ότι εάν το βάρος αυξηθεί κατά 1g, η εκπομπή CO2 θα αυξηθεί κατά 0.00755095g.

Εάν το μέγεθος του κινητήρα (το όγκο) αυξηθεί κατά 1 ccm, η εκπομπή CO2 θα αυξηθεί κατά 0.00780526g.

Πιστεύω ότι είναι μια λογική προσέγγιση, αλλά παρακαλώ κάντε τις δοκιμές σας!

Προέβλεψα ότι αν ένα αυτοκίνητο με κινητήρα 1300ccm και βάρος 2300 κιλών εκπέμπει περίπου 107 γραμμάρια διοξειδίου του άνθρακα.

Τι θα συνέβαινε αν προσθέσουμε 1000g βάρος;

Παράδειγμα

Αναπαράσταση του προηγούμενου παραδείγματος, αλλά με το βάρος από 2300 σε 3300:

import pandas
from sklearn import linear_model
df = pandas.read_csv("cars.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
regr = linear_model.LinearRegression()
regr.fit(X, y)
predictedCO2 = regr.predict([[3300, 1300]])
print(predictedCO2)

Αποτελέσματα:

[114.75968007]

Εκτέλεση Εισήγηση

Προέβλεψα ότι ένα αυτοκίνητο με κινητήρα 1.3 λίτρων και βάρος 3.3 τόνων θα εκπέμπει περίπου 115 γραμμάρια διοξειδίου του άνθρακα ανά χιλιόμετρο.

Αυτό δείχνει ότι το σύμβολο του 0.00755095 είναι σωστό:

107.2087328 + (1000 * 0.00755095) = 114.75968