[PYTHON] <Kurs> Maschinelles Lernen Kapitel 1: Lineares Regressionsmodell

Maschinelles Lernen

Link zum Inhaltsverzeichnis

Inhaltsverzeichnis Kapitel 1: Lineares Regressionsmodell [Kapitel 2: Nichtlineares Regressionsmodell] (https://qiita.com/matsukura04583/items/baa3f2269537036abc57) [Kapitel 3: Logistisches Regressionsmodell] (https://qiita.com/matsukura04583/items/0fb73183e4a7a6f06aa5) [Kapitel 4: Hauptkomponentenanalyse] (https://qiita.com/matsukura04583/items/b3b5d2d22189afc9c81c) [Kapitel 5: Algorithmus 1 (k-Nachbarschaftsmethode (kNN))] (https://qiita.com/matsukura04583/items/543719b44159322221ed) [Kapitel 6: Algorithmus 2 (k-Mittel)] (https://qiita.com/matsukura04583/items/050c98c7bb1c9e91be71) [Kapitel 7: Support Vector Machine] (https://qiita.com/matsukura04583/items/6b718642bcbf97ae2ca8)

Einführung

Grundlegende Methoden des maschinellen Lernens verstehen und implementieren

Modellierungsablauf für maschinelles Lernen

1.Problemstellung->2.Datenauswahl->3.Datenvorverarbeitung->4.Auswahl des maschinellen Lernmodells
->5.Modelllernen(Parameter Schätzung)->6.Modellbewertung

Klassifizierung des maschinellen Lernens und typischer Modelle und Merkmale

Klassifizierung lernen Aufgabe Modell des maschinellen Lernens Von den Parametern
Vermutung Problem
Modell-
Auswahl / Bewertung
Mit einem Lehrer lernen Prognose Lineare Regression / nichtlineare Regression Minimum-Square-Methode / Maximierung der Wahrscheinlichkeit Holdout-Methode / Kreuzungsüberprüfungsmethode
Das gleiche wie oben Einstufung Logistische Rückgabe Wahrscheinlichkeit maximieren(Höchstwahrscheinlich Methode) Das gleiche wie oben
Das gleiche wie oben Das gleiche wie oben Nächste / K.-Algorithmus Nächste / K.-Algorithmus Das gleiche wie oben
Das gleiche wie oben Das gleiche wie oben Unterstützung Vektormaschine Margenmaximierung Das gleiche wie oben
Lernen ohne Lehrer Clustering K-bedeutet Algorithmus K-bedeutet Algorithmus- Keiner
Das gleiche wie oben Dimensionsreduzierung Hauptkomponentenanalyse Maximieren Sie die Verteilung Keiner

Kapitel 1: Lineares Regressionsmodell

Was ist ein Regressionsproblem?

Durch Regression behandelte Daten

Lineares Regressionsmodell

Artikel Erläuterung
Klassifizierung lernen Mit einem Lehrer lernen
Aufgabe Prognose
Modell des maschinellen Lernens Lineare Regression~~Nichtlineare Regression~~
Von den Parametern
Vermutung Problem
Minimum-Square-Methode / Maximierung der Wahrscheinlichkeit
Modellauswahl / -bewertung Holdout-Methode
Gegenüberstellung
  • Ein Modell, das eine lineare Kombination von Eingabe- und m-dimensionalen Parametern ausgibt
  • << Hinweise zur üblichen Notation >> Fügen Sie dem vorhergesagten Wert einen Hut (^) hinzu (dh anders als die richtigen Antwortdaten)
  • ** Lehrerdaten </ font> **
  {(x_i,y_i):i=1,・ ・ ・,n}
  • ** Parameter </ font> **
 w=(w_1,w_2,・ ・ ・,w_m)^T \in R^m
  • ** Lineare Verbindung </ font> ** (Vorhersagewert ist üblich, um einen Hut aufzusetzen)
 \hat{y}=w^Tx+w_0 = \sum_{j=1}^{m} w_jx_j+w_0
  • (Thema) Schätzung des Regressionskoeffizienten nach der wahrscheinlichsten Methode
  • Es ist auch möglich, den Fehler unter Verwendung der Maximierung der Wahrscheinlichkeitsfunktion zu schätzen, wobei eine Wahrscheinlichkeitsvariable angenommen wird, die einer Normalverteilung folgt. Im Fall der + Regression stimmt die wahrscheinlichste Lösung mit der Skala mit dem kleinsten Quadrat überein.

Ein lineares Regressionsmodell ist ein Modell, das den Wert der Zielvariablen aus dem Wert der erklärenden Variablen unter Verwendung der folgenden Regressionsgleichung vorhersagt.

Insbesondere wird eine erklärende Variable als "Einzelregressionsanalyse" bezeichnet, und zwei oder mehr erklärende Variablen werden als "Mehrfachregressionsanalyse" bezeichnet. RNR1.jpg

(Übung 1) Lineares Regressionsmodell unter Verwendung von scikit-learn-Boston Hausing Data-

Dinge die zu tun sind
  • Einstellungen
  • Analysieren Sie den Wohnungsdatensatz von Boston mit einem linearen Modell
  • Geeignete Bewertungsergebnisse erforderlich
  • Das Unternehmen wird beschädigt, wenn es zu teuer oder zu billig ist
  • Herausforderung
  • Wie viel kostet eine Immobilie mit 4 Zimmern und einer Kriminalitätsrate von 0,3?
  1. Importieren Sie die erforderlichen Module und Daten
#aus Modulname Importklassenname (oder Funktionsname oder Variablenname)

from sklearn.datasets import load_boston
from pandas import DataFrame
import numpy as np

#Boston Daten"boston"In eine aufgerufene Instanz importieren
boston = load_boston()

#Überprüfen Sie die importierten Daten(data / target / feature_names / DESCR)
print(boston)

Beschreibung typischer Spalten スクリーンショット 2019-12-11 14.46.40.png

Zeigen Sie den Inhalt von Boston

Ergebnis


{'data': array([[6.3200e-03, 1.8000e+01, 2.3100e+00, ..., 1.5300e+01, 3.9690e+02,
        4.9800e+00],
       [2.7310e-02, 0.0000e+00, 7.0700e+00, ..., 1.7800e+01, 3.9690e+02,
        9.1400e+00],
       [2.7290e-02, 0.0000e+00, 7.0700e+00, ..., 1.7800e+01, 3.9283e+02,
        4.0300e+00],
       ...,
       [6.0760e-02, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9690e+02,
        5.6400e+00],
       [1.0959e-01, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9345e+02,
        6.4800e+00],
       [4.7410e-02, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9690e+02,
        7.8800e+00]]), 'target': array([24. , 21.6, 34.7, 33.4, 36.2, 28.7, 22.9, 27.1, 16.5, 18.9, 15. ,
       18.9, 21.7, 20.4, 18.2, 19.9, 23.1, 17.5, 20.2, 18.2, 13.6, 19.6,
       15.2, 14.5, 15.6, 13.9, 16.6, 14.8, 18.4, 21. , 12.7, 14.5, 13.2,
       13.1, 13.5, 18.9, 20. , 21. , 24.7, 30.8, 34.9, 26.6, 25.3, 24.7,
       21.2, 19.3, 20. , 16.6, 14.4, 19.4, 19.7, 20.5, 25. , 23.4, 18.9,
       35.4, 24.7, 31.6, 23.3, 19.6, 18.7, 16. , 22.2, 25. , 33. , 23.5,
       19.4, 22. , 17.4, 20.9, 24.2, 21.7, 22.8, 23.4, 24.1, 21.4, 20. ,
       20.8, 21.2, 20.3, 28. , 23.9, 24.8, 22.9, 23.9, 26.6, 22.5, 22.2,
       23.6, 28.7, 22.6, 22. , 22.9, 25. , 20.6, 28.4, 21.4, 38.7, 43.8,
       33.2, 27.5, 26.5, 18.6, 19.3, 20.1, 19.5, 19.5, 20.4, 19.8, 19.4,
       21.7, 22.8, 18.8, 18.7, 18.5, 18.3, 21.2, 19.2, 20.4, 19.3, 22. ,
       20.3, 20.5, 17.3, 18.8, 21.4, 15.7, 16.2, 18. , 14.3, 19.2, 19.6,
       23. , 18.4, 15.6, 18.1, 17.4, 17.1, 13.3, 17.8, 14. , 14.4, 13.4,
       15.6, 11.8, 13.8, 15.6, 14.6, 17.8, 15.4, 21.5, 19.6, 15.3, 19.4,
       17. , 15.6, 13.1, 41.3, 24.3, 23.3, 27. , 50. , 50. , 50. , 22.7,
       25. , 50. , 23.8, 23.8, 22.3, 17.4, 19.1, 23.1, 23.6, 22.6, 29.4,
       23.2, 24.6, 29.9, 37.2, 39.8, 36.2, 37.9, 32.5, 26.4, 29.6, 50. ,
       32. , 29.8, 34.9, 37. , 30.5, 36.4, 31.1, 29.1, 50. , 33.3, 30.3,
       34.6, 34.9, 32.9, 24.1, 42.3, 48.5, 50. , 22.6, 24.4, 22.5, 24.4,
       20. , 21.7, 19.3, 22.4, 28.1, 23.7, 25. , 23.3, 28.7, 21.5, 23. ,
       26.7, 21.7, 27.5, 30.1, 44.8, 50. , 37.6, 31.6, 46.7, 31.5, 24.3,
       31.7, 41.7, 48.3, 29. , 24. , 25.1, 31.5, 23.7, 23.3, 22. , 20.1,
       22.2, 23.7, 17.6, 18.5, 24.3, 20.5, 24.5, 26.2, 24.4, 24.8, 29.6,
       42.8, 21.9, 20.9, 44. , 50. , 36. , 30.1, 33.8, 43.1, 48.8, 31. ,
       36.5, 22.8, 30.7, 50. , 43.5, 20.7, 21.1, 25.2, 24.4, 35.2, 32.4,
       32. , 33.2, 33.1, 29.1, 35.1, 45.4, 35.4, 46. , 50. , 32.2, 22. ,
       20.1, 23.2, 22.3, 24.8, 28.5, 37.3, 27.9, 23.9, 21.7, 28.6, 27.1,
       20.3, 22.5, 29. , 24.8, 22. , 26.4, 33.1, 36.1, 28.4, 33.4, 28.2,
       22.8, 20.3, 16.1, 22.1, 19.4, 21.6, 23.8, 16.2, 17.8, 19.8, 23.1,
       21. , 23.8, 23.1, 20.4, 18.5, 25. , 24.6, 23. , 22.2, 19.3, 22.6,
       19.8, 17.1, 19.4, 22.2, 20.7, 21.1, 19.5, 18.5, 20.6, 19. , 18.7,
       32.7, 16.5, 23.9, 31.2, 17.5, 17.2, 23.1, 24.5, 26.6, 22.9, 24.1,
       18.6, 30.1, 18.2, 20.6, 17.8, 21.7, 22.7, 22.6, 25. , 19.9, 20.8,
       16.8, 21.9, 27.5, 21.9, 23.1, 50. , 50. , 50. , 50. , 50. , 13.8,
       13.8, 15. , 13.9, 13.3, 13.1, 10.2, 10.4, 10.9, 11.3, 12.3,  8.8,
        7.2, 10.5,  7.4, 10.2, 11.5, 15.1, 23.2,  9.7, 13.8, 12.7, 13.1,
       12.5,  8.5,  5. ,  6.3,  5.6,  7.2, 12.1,  8.3,  8.5,  5. , 11.9,
       27.9, 17.2, 27.5, 15. , 17.2, 17.9, 16.3,  7. ,  7.2,  7.5, 10.4,
        8.8,  8.4, 16.7, 14.2, 20.8, 13.4, 11.7,  8.3, 10.2, 10.9, 11. ,
        9.5, 14.5, 14.1, 16.1, 14.3, 11.7, 13.4,  9.6,  8.7,  8.4, 12.8,
       10.5, 17.1, 18.4, 15.4, 10.8, 11.8, 14.9, 12.6, 14.1, 13. , 13.4,
       15.2, 16.1, 17.8, 14.9, 14.1, 12.7, 13.5, 14.9, 20. , 16.4, 17.7,
       19.5, 20.2, 21.4, 19.9, 19. , 19.1, 19.1, 20.1, 19.9, 19.6, 23.2,
       29.8, 13.8, 13.3, 16.7, 12. , 14.6, 21.4, 23. , 23.7, 25. , 21.8,
       20.6, 21.2, 19.1, 20.6, 15.2,  7. ,  8.1, 13.6, 20.1, 21.8, 24.5,
       23.1, 19.7, 18.3, 21.2, 17.5, 16.8, 22.4, 20.6, 23.9, 22. , 11.9]), 'feature_names': array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD',
       'TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7'), 'DESCR': ".. _boston_dataset:\n\nBoston house prices dataset\n---------------------------\n\n**Data Set Characteristics:**  \n\n    :Number of Instances: 506 \n\n    :Number of Attributes: 13 numeric/categorical predictive. Median Value (attribute 14) is usually the target.\n\n    :Attribute Information (in order):\n        - CRIM     per capita crime rate by town\n        - ZN       proportion of residential land zoned for lots over 25,000 sq.ft.\n        - INDUS    proportion of non-retail business acres per town\n        - CHAS     Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n        - NOX      nitric oxides concentration (parts per 10 million)\n        - RM       average number of rooms per dwelling\n        - AGE      proportion of owner-occupied units built prior to 1940\n        - DIS      weighted distances to five Boston employment centres\n        - RAD      index of accessibility to radial highways\n        - TAX      full-value property-tax rate per $10,000\n        - PTRATIO  pupil-teacher ratio by town\n        - B        1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town\n        - LSTAT    % lower status of the population\n        - MEDV     Median value of owner-occupied homes in $1000's\n\n    :Missing Attribute Values: None\n\n    :Creator: Harrison, D. and Rubinfeld, D.L.\n\nThis is a copy of UCI ML housing dataset.\nhttps://archive.ics.uci.edu/ml/machine-learning-databases/housing/\n\n\nThis dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.\n\nThe Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic\nprices and the demand for clean air', J. Environ. Economics & Management,\nvol.5, 81-102, 1978.   Used in Belsley, Kuh & Welsch, 'Regression diagnostics\n...', Wiley, 1980.   N.B. Various transformations are used in the table on\npages 244-261 of the latter.\n\nThe Boston house-price data has been used in many machine learning papers that address regression\nproblems.   \n     \n.. topic:: References\n\n   - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.\n   - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.\n", 'filename': '/usr/local/lib/python3.6/dist-packages/sklearn/datasets/data/boston_house_prices.csv'}
#Überprüfen Sie den Inhalt der DESCR-Variablen
print(boston['DESCR'])

Ergebnis


.. _boston_dataset:

Boston house prices dataset
---------------------------

**Data Set Characteristics:**  

    :Number of Instances: 506 

    :Number of Attributes: 13 numeric/categorical predictive. Median Value (attribute 14) is usually the target.

    :Attribute Information (in order):
        - CRIM     per capita crime rate by town
        - ZN       proportion of residential land zoned for lots over 25,000 sq.ft.
        - INDUS    proportion of non-retail business acres per town
        - CHAS     Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)
        - NOX      nitric oxides concentration (parts per 10 million)
        - RM       average number of rooms per dwelling
        - AGE      proportion of owner-occupied units built prior to 1940
        - DIS      weighted distances to five Boston employment centres
        - RAD      index of accessibility to radial highways
        - TAX      full-value property-tax rate per $10,000
        - PTRATIO  pupil-teacher ratio by town
        - B        1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town
        - LSTAT    % lower status of the population
        - MEDV     Median value of owner-occupied homes in $1000's

    :Missing Attribute Values: None

    :Creator: Harrison, D. and Rubinfeld, D.L.

This is a copy of UCI ML housing dataset.
https://archive.ics.uci.edu/ml/machine-learning-databases/housing/


This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.

The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic
prices and the demand for clean air', J. Environ. Economics & Management,
vol.5, 81-102, 1978.   Used in Belsley, Kuh & Welsch, 'Regression diagnostics
...', Wiley, 1980.   N.B. Various transformations are used in the table on
pages 244-261 of the latter.

The Boston house-price data has been used in many machine learning papers that address regression
problems.   
     
.. topic:: References

   - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.
   - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.
   

#feature_Überprüfen Sie den Inhalt der Namensvariablen
#Spaltenname
print(boston['feature_names'])

Ergebnis


['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'
 'B' 'LSTAT']
#Datenvariable(Erklärende Variable)Überprüfen Sie den Inhalt
print(boston['data'])

Ergebnis


[[6.3200e-03 1.8000e+01 2.3100e+00 ... 1.5300e+01 3.9690e+02 4.9800e+00]
 [2.7310e-02 0.0000e+00 7.0700e+00 ... 1.7800e+01 3.9690e+02 9.1400e+00]
 [2.7290e-02 0.0000e+00 7.0700e+00 ... 1.7800e+01 3.9283e+02 4.0300e+00]
 ...
 [6.0760e-02 0.0000e+00 1.1930e+01 ... 2.1000e+01 3.9690e+02 5.6400e+00]
 [1.0959e-01 0.0000e+00 1.1930e+01 ... 2.1000e+01 3.9345e+02 6.4800e+00]
 [4.7410e-02 0.0000e+00 1.1930e+01 ... 2.1000e+01 3.9690e+02 7.8800e+00]]
#Zielvariable(Objektive Variable)Überprüfen Sie den Inhalt
print(boston['target'])

Ergebnis


[24.  21.6 34.7 33.4 36.2 28.7 22.9 27.1 16.5 18.9 15.  18.9 21.7 20.4
 18.2 19.9 23.1 17.5 20.2 18.2 13.6 19.6 15.2 14.5 15.6 13.9 16.6 14.8
 18.4 21.  12.7 14.5 13.2 13.1 13.5 18.9 20.  21.  24.7 30.8 34.9 26.6
 25.3 24.7 21.2 19.3 20.  16.6 14.4 19.4 19.7 20.5 25.  23.4 18.9 35.4
 24.7 31.6 23.3 19.6 18.7 16.  22.2 25.  33.  23.5 19.4 22.  17.4 20.9
 24.2 21.7 22.8 23.4 24.1 21.4 20.  20.8 21.2 20.3 28.  23.9 24.8 22.9
 23.9 26.6 22.5 22.2 23.6 28.7 22.6 22.  22.9 25.  20.6 28.4 21.4 38.7
 43.8 33.2 27.5 26.5 18.6 19.3 20.1 19.5 19.5 20.4 19.8 19.4 21.7 22.8
 18.8 18.7 18.5 18.3 21.2 19.2 20.4 19.3 22.  20.3 20.5 17.3 18.8 21.4
 15.7 16.2 18.  14.3 19.2 19.6 23.  18.4 15.6 18.1 17.4 17.1 13.3 17.8
 14.  14.4 13.4 15.6 11.8 13.8 15.6 14.6 17.8 15.4 21.5 19.6 15.3 19.4
 17.  15.6 13.1 41.3 24.3 23.3 27.  50.  50.  50.  22.7 25.  50.  23.8
 23.8 22.3 17.4 19.1 23.1 23.6 22.6 29.4 23.2 24.6 29.9 37.2 39.8 36.2
 37.9 32.5 26.4 29.6 50.  32.  29.8 34.9 37.  30.5 36.4 31.1 29.1 50.
 33.3 30.3 34.6 34.9 32.9 24.1 42.3 48.5 50.  22.6 24.4 22.5 24.4 20.
 21.7 19.3 22.4 28.1 23.7 25.  23.3 28.7 21.5 23.  26.7 21.7 27.5 30.1
 44.8 50.  37.6 31.6 46.7 31.5 24.3 31.7 41.7 48.3 29.  24.  25.1 31.5
 23.7 23.3 22.  20.1 22.2 23.7 17.6 18.5 24.3 20.5 24.5 26.2 24.4 24.8
 29.6 42.8 21.9 20.9 44.  50.  36.  30.1 33.8 43.1 48.8 31.  36.5 22.8
 30.7 50.  43.5 20.7 21.1 25.2 24.4 35.2 32.4 32.  33.2 33.1 29.1 35.1
 45.4 35.4 46.  50.  32.2 22.  20.1 23.2 22.3 24.8 28.5 37.3 27.9 23.9
 21.7 28.6 27.1 20.3 22.5 29.  24.8 22.  26.4 33.1 36.1 28.4 33.4 28.2
 22.8 20.3 16.1 22.1 19.4 21.6 23.8 16.2 17.8 19.8 23.1 21.  23.8 23.1
 20.4 18.5 25.  24.6 23.  22.2 19.3 22.6 19.8 17.1 19.4 22.2 20.7 21.1
 19.5 18.5 20.6 19.  18.7 32.7 16.5 23.9 31.2 17.5 17.2 23.1 24.5 26.6
 22.9 24.1 18.6 30.1 18.2 20.6 17.8 21.7 22.7 22.6 25.  19.9 20.8 16.8
 21.9 27.5 21.9 23.1 50.  50.  50.  50.  50.  13.8 13.8 15.  13.9 13.3
 13.1 10.2 10.4 10.9 11.3 12.3  8.8  7.2 10.5  7.4 10.2 11.5 15.1 23.2
  9.7 13.8 12.7 13.1 12.5  8.5  5.   6.3  5.6  7.2 12.1  8.3  8.5  5.
 11.9 27.9 17.2 27.5 15.  17.2 17.9 16.3  7.   7.2  7.5 10.4  8.8  8.4
 16.7 14.2 20.8 13.4 11.7  8.3 10.2 10.9 11.   9.5 14.5 14.1 16.1 14.3
 11.7 13.4  9.6  8.7  8.4 12.8 10.5 17.1 18.4 15.4 10.8 11.8 14.9 12.6
 14.1 13.  13.4 15.2 16.1 17.8 14.9 14.1 12.7 13.5 14.9 20.  16.4 17.7
 19.5 20.2 21.4 19.9 19.  19.1 19.1 20.1 19.9 19.6 23.2 29.8 13.8 13.3
 16.7 12.  14.6 21.4 23.  23.7 25.  21.8 20.6 21.2 19.1 20.6 15.2  7.
  8.1 13.6 20.1 21.8 24.5 23.1 19.7 18.3 21.2 17.5 16.8 22.4 20.6 23.9
 22.  11.9]

Erstellen eines Datenrahmens

#Konvertieren Sie erklärende Variablen in DataFrame
df = DataFrame(data=boston.data, columns = boston.feature_names)
#Fügen Sie DataFrame eine Zielvariable hinzu
df['PRICE'] = np.array(boston.target)
#Zeige die ersten 5 Zeilen
df.head(5)
スクリーンショット 2019-12-11 11.52.12.png

Lineare einfache Regressionsanalyse

Lassen Sie uns zunächst eine einfache Regressionsanalyse durchführen, die den Preis anhand der Anzahl der Zimmer vorhersagt. Rufen Sie Daten vom Standort mit der Zimmernummer (RM) ab.

#Zeigen Sie Daten an, indem Sie Spalten angeben
df[['RM']].head()
スクリーンショット 2019-12-11 12.00.19.png

(Referenz: Check df.head): Datenoperation von DataFrame von Pandas

#Erklärende Variable
data = df.loc[:, ['RM']].values
#Datenliste anzeigen(1-5)
data[0:5]

Ergebnis


array([[6.575],
       [6.421],
       [7.185],
       [6.998],
       [7.147]])

(Referenz) Abrufen / Ändern des Werts einer Position mit Pandas unter, iat, loc, iloc

#Objektive Variable
target = df.loc[:, 'PRICE'].values
target[0:5]
  • Bringen Sie alle PREISE durch Schneiden zum Ziel

Ergebnis


array([24. , 21.6, 34.7, 33.4, 36.2])

(Referenz) LinearRegression-Klasse von sklearn

##Importieren Sie LinearRegression aus dem sklearn-Modul
from sklearn.linear_model import LinearRegression

#Objekterstellung
model = LinearRegression()
#model.get_params()
#model = LinearRegression(fit_intercept = True, normalize = False, copy_X = True,  n_jobs = 1)

#Parameterschätzung mit Anpassungsfunktion
model.fit(data, target)

Erstellt eine Instanz aus einer Klasse (Methode von sklearn) Die Instanz hat eine Methode.

  • Die Fit-Funktion ist eine Trainingsmethode. fit(x, y) Führen Sie eine lineare Regressionsmodellanpassung durch. Beginn des Trainings. x sind die Zieldaten und y sind die richtigen Antwortdaten. * Vorausgesetzt, überwachtes Lernen. Wenn Sie es bestehen, wird hinter den Kulissen eine lineare Regression durchgeführt.

Ergebnis


LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)

Jetzt können Sie die Prognose sehen. Vorhersage mit dem durch Vorhersage (x) erstellten Modell.

#Prognose
model.predict([[1]])

Ergebnis


array([-25.5685118])

[(Referenz): Verwendung der Klasse sklearn.linear_model.LinearRegression](https://pythondatascience.plavox.info/scikit-learn/%E7%B7%9A%E5%BD%A2%E5%9B%9E%E5% B8% B0)

Multiple Regressionsanalyse (2 Variablen)

df[['CRIM', 'RM']].head()
スクリーンショット 2019-12-11 14.03.19.png
#Erklärende Variable
data2 = df.loc[:, ['CRIM', 'RM']].values
#Objektive Variable
target2 = df.loc[:, 'PRICE'].values
#Objekterstellung
model2 = LinearRegression()
#Parameterschätzung mit Anpassungsfunktion
model2.fit(data2, target2)

Ergebnis


LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)
model2.predict([[0.3, 4]])

Ergebnis


array([4.24007956])

Wie viel kostet eine Immobilie mit 4 Zimmern und einer Kriminalitätsrate von 0,3? Die Antwort lautet 4.24.

Überprüfen Sie den Regressionskoeffizienten und den Abschnittswert

Geben Sie den Regressionskoeffizienten und den Abschnitt der einfachen Regression aus Die Anpassungsfunktion wird den Punkt finden, der die mittlere quadratische Unterstützung minimiert. Es ist wichtig, das zu verstehen und die Funktion zu verwenden. Der Befehl zum Verstehen des vorhergesagten Wertes (w hat) von w lautet wie folgt.


print('Geschätzter Regressionskoeffizient: %.3f,Geschätzter Abschnitt: %.3f' % (model.coef_, model.intercept_))

Ergebnis


Geschätzter Regressionskoeffizient: 9.236,Geschätzter Abschnitt: -35.481

Je höher die Kriminalitätsrate, desto billiger wird sie und je größer die Anzahl der Zimmer, desto höher wird sie sein.

#Geben Sie den Regressionskoeffizienten und den Abschnitt der multiplen Regression aus
print(model.coef_)
print(model.intercept_)

Ergebnis


[9.23560156]
-35.48090633823544

Modell Bestätigung

  1. Entscheidungskoeffizient
#Entscheidungskoeffizient
print('Einfacher Regressionsbestimmungskoeffizient: %.3f,Bestimmungskoeffizient für multiple Regression: %.3f' % (model.score(data,target), model2.score(data2,target2)))

Ergebnis


Einfacher Regressionsbestimmungskoeffizient: 0.483,Bestimmungskoeffizient für multiple Regression: 0.542
# train_test_Split importieren
from sklearn.model_selection import train_test_split
# 70%Zum Lernen 30%Ist in Verifizierungsdaten unterteilt
X_train, X_test, y_train, y_test = train_test_split(data, target, 
test_size = 0.3, random_state = 666)
#Parameterschätzung mit Trainingsdaten
model.fit(X_train, y_train)
#Vorhersage aus dem erstellten Modell (unter Verwendung von Trainings- und Verifizierungsmodellen)
y_train_pred = model.predict(X_train)
y_test_pred = model.predict(X_test)
#Matplotlib importieren
import matplotlib.pyplot as plt
#Wenn Sie Jupyter verwenden, schreiben Sie die folgende Magie und eine Zahl wird auf dem Notizbuch angezeigt
%matplotlib inline
#Zeichnen Sie Residuen zum Lernen bzw. Verifizieren
plt.scatter(y_train_pred, y_train_pred - y_train, c = 'blue', marker = 'o', label = 'Train Data')
plt.scatter(y_test_pred, y_test_pred - y_test, c = 'lightgreen', marker = 's', label = 'Test Data')
plt.xlabel('Predicted Values')
plt.ylabel('Residuals')
#Legende oben links angezeigt
plt.legend(loc = 'upper left')
# y =Zeichnen Sie eine gerade Linie auf 0
plt.hlines(y = 0, xmin = -10, xmax = 50, lw = 2, color = 'red')
plt.xlim([10, 50])
plt.show()

スクリーンショット 2019-12-11 19.55.53.png

Erwägung

  • Die Verwendung von sklearn macht das Programm sehr einfach. Sie sollten andere Modelle zum Lernen ausprobieren.
  • In diesem Fall ist der Bestimmungskoeffizient für die einzelne Regression: 0,483 und der Bestimmungskoeffizient für die mehrfache Regression: 0,542, und die mehrfache Regression ist genauer.

ähnliche Links

Inhaltsverzeichnis Kapitel 1: Lineares Regressionsmodell [Kapitel 2: Nichtlineares Regressionsmodell] (https://qiita.com/matsukura04583/items/baa3f2269537036abc57) [Kapitel 3: Logistisches Regressionsmodell] (https://qiita.com/matsukura04583/items/0fb73183e4a7a6f06aa5) [Kapitel 4: Hauptkomponentenanalyse] (https://qiita.com/matsukura04583/items/b3b5d2d22189afc9c81c) [Kapitel 5: Algorithmus 1 (k-Nachbarschaftsmethode (kNN))] (https://qiita.com/matsukura04583/items/543719b44159322221ed) [Kapitel 6: Algorithmus 2 (k-Mittel)] (https://qiita.com/matsukura04583/items/050c98c7bb1c9e91be71) [Kapitel 7: Support Vector Machine] (https://qiita.com/matsukura04583/items/6b718642bcbf97ae2ca8)

Recommended Posts