Σκύλα Μηχανικής Εκμάθησης
- Προηγούμενη Σελίδα Πολυπαραγοντική Επιστροφή
- Επόμενη Σελίδα Εκπαίδευση/Δοκιμή
Feature Scaling (Scale Features)
It may be difficult to compare data when your data has different values, even when using different units of measurement. How many kilograms are compared to meters? Or altitude compared to time?
The answer to this question is scaling. We can scale the data to new values that are easy to compare.
Please see the table below, which corresponds toΠολυπαραγοντική ΕπιστροφήThe dataset used in the chapter is the same, but this time, the Volume column contains units in liters instead of ccm (1.0 instead of 1000).
Car | Model | Volume | Weight | CO2 |
---|---|---|---|---|
Toyota | Aygo | 1.0 | 790 | 99 |
Mitsubishi | Space Star | 1.2 | 1160 | 95 |
Skoda | Citigo | 1.0 | 929 | 95 |
Fiat | 500 | 0.9 | 865 | 90 |
Mini | Cooper | 1.5 | 1140 | 105 |
VW | Up! | 1.0 | 929 | 105 |
Skoda | Fabia | 1.4 | 1109 | 90 |
Mercedes | A-Class | 1.5 | 1365 | 92 |
Ford | Fiesta | 1.5 | 1112 | 98 |
Audi | A1 | 1.6 | 1150 | 99 |
Hyundai | I20 | 1.1 | 980 | 99 |
Suzuki | Swift | 1.3 | 990 | 101 |
Ford | Fiesta | 1.0 | 1112 | 99 |
Honda | Civic | 1.6 | 1252 | 94 |
Hundai | I30 | 1.6 | 1326 | 97 |
Opel | Astra | 1.6 | 1330 | 97 |
BMW | 1 | 1.6 | 1365 | 99 |
Mazda | 3 | 2.2 | 1280 | 104 |
Skoda | Rapid | 1.6 | 1119 | 104 |
Ford | Focus | 2.0 | 1328 | 105 |
Ford | Mondeo | 1.6 | 1584 | 94 |
Opel | Insignia | 2.0 | 1428 | 99 |
Mercedes | C-Class | 2.1 | 1365 | 99 |
Skoda | Octavia | 1.6 | 1415 | 99 |
Volvo | S60 | 2.0 | 1415 | 99 |
Mercedes | CLA | 1.5 | 1465 | 102 |
Audi | A4 | 2.0 | 1490 | 104 |
Audi | A6 | 2.0 | 1725 | 114 |
Volvo | V70 | 1.7 | 1523 | 109 |
BMW | 5 | 2.0 | 1705 | 114 |
Mercedes | E-Class | 2.1 | 1605 | 115 |
Volvo | XC70 | 2.0 | 1746 | 117 |
Ford | B-Max | 1.6 | 1235 | 104 |
BMW | 2 | 1.6 | 1390 | 108 |
Opel | Zafira | 1.6 | 1405 | 109 |
Mercedes | SLK | 2.5 | 1395 | 120 |
Είναι δύσκολο να συγκρίνουμε την κατανάλωση 1.0 με το βάρος 790, αλλά αν τα κλιμακώσουμε σε τιμές που μπορούν να συγκριθούν, μπορούμε εύκολα να δούμε πόσο μεγάλη είναι η διαφορά μεταξύ μιας τιμής και της άλλης.
Υπάρχουν πολλές μεθόδους κλιμάκωσης δεδομένων, στη σημερινή διδασκαλία θα χρησιμοποιήσουμε μια μέθοδο που ονομάζεται standardization (standardization).
Η μέθοδος standardization χρησιμοποιεί την παρακάτω συνάρτηση:
z = (x - u) / s
όπου z είναι η νέα τιμή, x είναι η αρχική τιμή, u είναι η μέση τιμή, και s είναι η τυπική απόκλιση.
Αν προκύπτει από τον παραπάνω σύνολο δεδομένων weight στη στήλη, η πρώτη τιμή είναι 790, η κλιμακωμένη τιμή είναι:
(790 - 1292.23) / 238.74 = -2.1
Αν προκύπτει από τον παραπάνω σύνολο δεδομένων volume στη στήλη, η πρώτη τιμή είναι 1.0, η κλιμακωμένη τιμή είναι:
(1.0 - 1.61) / 0.38 = -1.59
Τώρα, μπορείτε να συγκρίνετε -2.1 με -1.59 αντί να συγκρίνετε 790 με 1.0.
Δεν χρειάζεται να εκτελέσετε χειροκίνητα αυτήν τη διαδικασία, το μονάδης Python sklearn έχει μια μέθοδο με το όνομα StandardScaler()
μεθόδου που επιστρέφει το αντικείμενο Scaler με τη μέθοδο μετατροπής δεδομένων.
Παράδειγμα
Εκτείνετε την κλίμακα όλων των τιμών στις στήλες Weight και Volume:
import pandas from sklearn import linear_model from sklearn.preprocessing import StandardScaler scale = StandardScaler() df = pandas.read_csv("cars2.csv") X = df[['Weight', 'Volume']] scaledX = scale.fit_transform(X) τυπώστε scaledX
Αποτελέσματα:
Παρακαλώ σημειώστε ότι οι πρώτες δύο τιμές είναι -2.1 και -1.59, όπως αναμένεται από τους υπολογισμούς μας:
[[-2.10389253 -1.59336644]] [-0.55407235 -1.07190106] [-1.52166278 -1.59336644] [-1.78973979 -1.85409913] [-0.63784641 -0.28970299] [-1.52166278 -1.59336644] [-0.76769621 -0.55043568] [ 0.3046118 -0.28970299] [-0.7551301 -0.28970299] [-0.59595938 -0.0289703 ] [-1.30803892 -1.33263375] [-1.26615189 -0.81116837] [-0.7551301 -1.59336644] [-0.16871166 -0.0289703 ] [ 0.14125238 -0.0289703 ] [ 0.15800719 -0.0289703 ] [ 0.3046118 -0.0289703 ] [-0.05142797 1.53542584] [-0.72580918 -0.0289703 ] [ 0.14962979 1.01396046] [ 1.2219378 -0.0289703 ] [ 0.5685001 1.01396046] [ 0.3046118 1.27469315] [ 0.51404696 -0.0289703 ] [ 0.51404696 1.01396046] [ 0.72348212 -0.28970299] [ 0.8281997 1.01396046] [ 1.81254495 1.01396046] [ 0.96642691 -0.0289703 ] [ 1.72877089 1.01396046] [ 1.30990057 1.27469315] [ 1.90050772 1.01396046] [-0.23991961 -0.0289703 ] [ 0.40932938 -0.0289703 ] [ 0.47215993 -0.0289703 ] [ 0.4302729 2.31762392]
Προβλέψτε την τιμή CO2
Πολυπαραγοντική ΕπιστροφήΗ εργασία αυτού του κεφαλαίου είναι να προβλέψετε την εκπομπή διοξειδίου του άνθρακα ενός αυτοκινήτου γνωρίζοντας μόνο το βάρος και την κατανάλωση του.
Μετά τη συρρίκνωση της δεδομένων, πρέπει να χρησιμοποιηθεί η κλίμακα κατά την πρόβλεψη των τιμών:
Παράδειγμα
Προβλέψτε την εκπομπή διοξειδίου του άνθρακα ενός αυτοκινήτου 1.3 λίτρων που βάρυει 2300 κιλά:
import pandas from sklearn import linear_model from sklearn.preprocessing import StandardScaler scale = StandardScaler() df = pandas.read_csv("cars2.csv") X = df[['Weight', 'Volume']] y = df['CO2'] scaledX = scale.fit_transform(X) regr = linear_model.LinearRegression() regr.fit(scaledX, y) scaled = scale.transform([[2300, 1.3]]) predictedCO2 = regr.predict([scaled[0]]) print(predictedCO2)
Αποτελέσματα:
[107.2087328]
- Προηγούμενη Σελίδα Πολυπαραγοντική Επιστροφή
- Επόμενη Σελίδα Εκπαίδευση/Δοκιμή