Πολυπαραγοντική Επιστροφή Μηχανικής Εκμάθησης
- Προηγούμενη Σελίδα Πολυωνυμική Επιστροφή
- Επόμενη Σελίδα Ανάπτυξη
Πολυπαραγοντική ανάλυση (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
- Προηγούμενη Σελίδα Πολυωνυμική Επιστροφή
- Επόμενη Σελίδα Ανάπτυξη