Beispiel für die Erstellung einer Python-Umgebung und eine SQL-Ausführung für DB und ein Memo der grundlegenden Verarbeitung für Statistiken 2019

Nachtrag 20180611

Diese Seite basiert auf der Annahme, dass sie unter Windows eigenständig ist, aber ich habe die neueste Version des Setups mit Sakuras VPS geschrieben. Schau langsam! : entspannt: LAMP + WP + Py Setup Note 2018

Nachtrag 20180816

Die neueste Version von 2018 (von VisualStudio) zum Erstellen einer eigenständigen Umgebung unter Windows ist jetzt verfügbar! Schau langsam! : entspannt: Hinweise zum Erstellen einer Python-Umgebung und zum Ausführen von SQL in einer DB 2018

Postscript 20190201

Da es viele Ansichten gibt, werde ich alle Inhalte überprüfen. Wie erwartet hat die Anzahl der japanischen Seiten nach drei Jahren erheblich zugenommen: entspannt:

Referenzseite

Python3 installieren

Python 3-Installation

Installationsort


C:\Python

Herunterladen (64-Bit-Version)

https://www.python.org/downloads/windows/ image.png

Fügen Sie vor der Installation den Pfad zur Umgebungsvariablen hinzu

Aktivieren Sie "Python 3.x zu PATH hinzufügen". Dann erkennt die Eingabeaufforderung Python. Ich habe die Installation anpassen ausgewählt, weil ich den Installationsort ändern wollte. image.png

Bestätigung

Umgebungsvariablen (super wichtig)

Wenn Sie die Starttaste drücken und "en" (= Umgebung) eingeben, wird "Systemumgebungsvariablen bearbeiten" angezeigt. Stellen Sie daher sicher, dass der Installationsort aufgezeichnet ist. image.png image.png

Eingabeaufforderung

Drücken Sie die Starttaste und geben Sie "cmd" ein, um die "Eingabeaufforderung" aufzurufen. Durch Setzen der Umgebungsvariablen kann der Befehl Python Nantoka übergeben werden. image.png

Überprüfen Sie die Python-Version


Microsoft Windows [Version 10.0.17134.523]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Users\yoshi> python -V
  Python 3.7.2

Liste der aktuell enthaltenen Bibliotheken (nichts enthalten)


C:\Users\yoshi> pip freeze
C:\Users\yoshi>

image.png

Verwendungshäufigkeit Installation des Dämonenpakets

pyodbc wird für die Datenbankverbindung verwendet pandas ist eine Bibliothek, die CSV und XL leicht lesen und analysieren kann.

Setzen Sie Pandas und Pyodbc vorerst ein


C:\Users\yoshi> python -m pip install --upgrade pip
C:\Users\yoshi> pip install pandas
C:\Users\yoshi> pip install pyodbc

Listen Sie die aktuell in


C:\Users\yoshi>pip freeze
  numpy==1.16.1
  pandas==0.24.0
  pyodbc==4.0.25
  python-dateutil==2.7.5
  pytz==2018.9
  six==1.12.0

Verzeichnis verschieben

Die Grundlagen von MS-DOS. Bewegen Sie sich, wenn Sie ein Python-Programm ausführen

Deshalb wähle ich dieses Verzeichnis als Arbeitsort


C:\Users\yoshi> cd/d "D:\OneDrive\Dokument\Project\Python"
D:\OneDrive\Dokument\Project\Python>

So führen Sie das Programm aus

Wechseln Sie in das Verzeichnis mit dem auszuführenden Programm "cd C: \ xxxx \ xxxx .." Sie können das Programm ausführen, indem Sie "python xxxx.py" eingeben.

main.py


print("Hello world!")

Du hast es geschafft!


D:\OneDrive\Dokument\Project\Python> python main.py
  Hello world!

Wenn Sie Ihre eigene Bibliothek erstellen

Zusammenfassung des Python-Imports Nehmen wir zum Beispiel an, Sie haben eine praktische Bibliothek namens "PyUtils.py" erstellt und in einem Verzeichnis namens "lib" gespeichert, oder? Dann können Sie eine bequeme Bibliothek (= benutzerdefinierte Funktion?) Von main.py mit dem reservierten Wort "Import" aufrufen, aber es gibt zwei Möglichkeiten, dies zu tun. 2 ist ein kürzerer Gesang, aber welcher ist es?

Aktueller Verzeichnisstatus


D:\OneDrive\Dokument\Project\Python> tree /F
  D:.
  │  main.py
  └─ lib
       PyUtils.py

So importieren Sie 1

main.py


import lib.PyUtils

print("Hello world!")
instance = lib.PyUtils.HelloClass()
instance.HelloWorldByPyUtils()

lib/PyUtils.py


class HelloClass:
    def HelloWorldByPyUtils(self):
        print("Hello PyUtils")

Prüfung


D:\OneDrive\Dokument\Project\Python> python main.py
  Hello world!
  Hello PyUtils

So importieren Sie 2

main.py


from lib.PyUtils import *

print("Hello world!")
instance = HelloClass()
instance.HelloWorldByPyUtils()

lib/PyUtils.py


class HelloClass:
    def HelloWorldByPyUtils(self):
        print("Hello PyUtils")

Prüfung


D:\OneDrive\Dokument\Project\Python> python main.py
  Hello world!
  Hello PyUtils

Lassen Sie csv mit UTF-8 lesen

VisualStudioCode Wirklich: entspannt: Oh, das ist ein schöner Name, weil er mit einem Namensgenerator erstellt wurde (dieser Generator ist auch praktisch für diesen) image.png

(Legen Sie die, die Sie kopieren und einfügen können)

Zugehörigkeit Vollständiger Name Vollständiger Name(Wunder) Mail Adresse Adresse Geburtstag
rekrutieren Honda Mamoru Honda Mamoru [email protected] Hokkaido 2019/2/1
rekrutieren Kengo Hayasaka Hayasaka Kengo [email protected] Präfektur Aomori 2019/2/2
rekrutieren Shin Tateishi Vorgehen [email protected] Präfektur Iwate 2019/2/3
rekrutieren Takayuki Washio Takayuki Washio [email protected] Präfektur Miyagi 2019/2/4
rekrutieren Takuji Guo Kakutakuji [email protected] Akita 2019/2/5
rekrutieren Mikio Ogushi Mikio Ogushi [email protected] Präfektur Yamagata 2019/2/6
rekrutieren Norihiko Shimanuki Shimanuki Norihiko [email protected] Präfektur Fukushima 2019/2/7
rekrutieren Hidetaka Kojo Hidetaka Kojo [email protected] Präfektur Ibaraki 2019/2/8
rekrutieren Takeshi Kurei Kujirai Kenji [email protected] Präfektur Tochigi 2019/2/9
rekrutieren Genta Kurusu Kurusu Genta [email protected] Präfektur Gunma 2019/2/10
rekrutieren Takahiro Shioi Shioi Takahiro [email protected] Saitama 2019/2/11
rekrutieren Kiyoto Moroda Kiyohito Morota [email protected] Präfektur Chiba 2019/2/12
rekrutieren Jinguji Yoshifumi Jinguuji Yoshifumi [email protected] Tokio 2019/2/13
rekrutieren Ikemizu Ryo Satori Ikemizu [email protected] Präfektur Kanagawa 2019/2/14
rekrutieren Yusuke Kashii Yusuke [email protected] Präfektur Niigata 2019/2/15
rekrutieren Shin Shugo Mashugo [email protected] Präfektur Toyama 2019/2/16
rekrutieren Hirohiko Nishizono Nishizono Hirohiko [email protected] Präfektur Ishikawa 2019/2/17
rekrutieren Nobuhiro Kuroda Ich habe es getan, Nobuhiro [email protected] Präfektur Fukui 2019/2/18
rekrutieren Masaharu Nezuka Masaharu Nezuka [email protected] Präfektur Yamanashi 2019/2/19
rekrutieren Nakamuro Ikki Kazuki Nakamuro [email protected] Präfektur Nagano 2019/2/20
rekrutieren Kenji Mimata Kenji Mitsumata [email protected] Präfektur Gifu 2019/2/21
rekrutieren Chihiro Mezaki Chihiro Mesaki [email protected] Präfektur Shizuoka 2019/2/22
rekrutieren Yugo Takita Yugo Takida [email protected] Präfektur Aichi 2019/2/23
rekrutieren Acht Wahrheit Makoto Yamoto [email protected] Präfektur Mie 2019/2/24
rekrutieren Akihiro Ori Orii Akihiro [email protected] Präfektur Shiga 2019/2/25
rekrutieren Hirotaka Nomaru Kein Umaru Hirotaka [email protected] Kyoto 2019/2/26
rekrutieren Meiden Jun Yasushi [email protected] Präfektur Osaka 2019/2/27
rekrutieren Kiichiro Yukishima Kojima Kiichirou [email protected] Präfektur Hyogo 2019/2/28
rekrutieren Mitsuya Shimotsuura Shimotsuura Mitsuya [email protected] Präfektur Nara 2019/3/1
rekrutieren Takayuki Azuchi Und Takayuki [email protected] Präfektur Wakayama 2019/3/2

SQL Server-Setup

db verwendet SQL Server Die SQL Server-Engine und Manegement Studio (zu betreibende Client-Software) unterscheiden sich. Download der SQL Server Engine image.png image.png image.png

Lokale SQL Server-Verbindung

image.png

Benutzer hinzufügen

Benutzername: Python Passwort: Python image.png image.png Nachtrag: Wenn Sie Django ausführen, aktivieren Sie hier "db_ddladmin" (TABELLE ERSTELLEN usw. kann ausgegeben werden). image.png

Fehlerbehebung

Selbst wenn ich die Anzahl der Benutzer mit dem Namen Python erhöhe, kann ich mich nur anmelden, wenn ich in den SQL Server-Authentifizierungsmodus wechsle. Wenn Sie dies ändern, vergessen Sie nicht, den Server neu zu starten. image.png image.png image.png

Erstellen Sie db

image.png image.png

Tabelle erstellen

CREATETABLE.sql


TABELLE ERSTELLEN Kunde(
	  [Zugehörigkeit] NVARCHAR(20) NULL
    , [Vollständiger Name] NVARCHAR(20) NULL
    , [Name (Kana)] NVARCHAR(20) NULL
    , [Mail Adresse] NVARCHAR(20) NULL
    , [Adresse] TEXT NULL
    , [Geburtstag] NVARCHAR(20) NULL
);

Hier ist ein Beispiel für eine superspezifische Datenbankoperation!

main.py


import pyodbc
import pandas as pd
import lib.PyUtils

#Stellen Sie eine Datenlöschabfrage aus
SQL_TEMPLATE = "DELETE FROM [dbo].[Klient]"       #SQL Original
editSql = SQL_TEMPLATE                          #Ersetzen Sie das ursprüngliche SQL
lib.PyUtils.ExecuteSQLBySQLServer(editSql)      #Ausgeben einer DELETE-Anweisung

#Die CSV, die die Daten enthält, die in die Datenbank gelangen, ist UTF-8
df = pd.read_csv(r"data\customer.csv")

#Zusätzliche Datenabfrage ausgeben
SQL_TEMPLATE = "INSERT INTO [dbo].[Klient]([Zugehörigkeit],[VollständigerName],[VollständigerName(かな)],[MailAdresse],[Adresse],[Geburtstag])VALUES('{0}','{1}','{2}','{3}','{4}','{5}')"
for line in df.values:
    editSql = SQL_TEMPLATE                      #SQL Original
    for i,col in enumerate(line):               #Ersetzen Sie das ursprüngliche SQL
        editSql = editSql.replace('{' + str(i) + '}', col)
    lib.PyUtils.ExecuteSQLBySQLServer(editSql)  #Ausgabe der INSERT-Anweisung

#Stellen Sie eine Auswahlabfrage aus
SQL_TEMPLATE = "SELECT * FROM [dbo].[Klient]"     #SQL Original
editSql = SQL_TEMPLATE                          #Ersetzen Sie das ursprüngliche SQL
df = lib.PyUtils.ReadQueryBySQLServer(editSql)  #Ausgabe der SELECT-Anweisung
for line in df.values:
    print(','.join(line))                       #Kochen und servieren Sie SQL-Ergebnisse

lib/PyUtils.py


import pyodbc
import pandas as pd

def ExecuteSQLBySQLServer(sql):
    con = pyodbc.connect(r'DRIVER={SQL Server};SERVER=localhost\SQLExpress;DATABASE=db;UID=python;PWD=python;')
    cur = con.cursor()
    cur.execute(sql)
    con.commit()
    con.close()

def ReadQueryBySQLServer(sql):
    con = pyodbc.connect(r'DRIVER={SQL Server};SERVER=localhost\SQLExpress;DATABASE=db;UID=python;PWD=python;')
    df = pd.io.sql.read_sql(sql,con)
    con.close()
    return(df)

Bestätigung

Prüfung


D:\OneDrive\Dokument\Project\Python> python main.py
rekrutieren,Honda Mamoru,Honda Mamoru,[email protected],Hokkaido,2019/2/1
rekrutieren,Kengo Hayasaka,Hayasaka Kengo,[email protected],Präfektur Aomori,2019/2/2
rekrutieren,Shin Tateishi,Vorgehen,[email protected],Präfektur Iwate,2019/2/3
rekrutieren,Takayuki Washio,Takayuki Washio,[email protected],Präfektur Miyagi,2019/2/4
rekrutieren,Takuji Guo,Kakutakuji,[email protected],Akita,2019/2/5
rekrutieren,Mikio Ogushi,Mikio Ogushi,[email protected],Präfektur Yamagata,2019/2/6
rekrutieren,Norihiko Shimanuki,Shimanuki Norihiko,[email protected],Präfektur Fukushima,2019/2/7
rekrutieren,Hidetaka Kojo,Hidetaka Kojo,[email protected],Präfektur Ibaraki,2019/2/8
rekrutieren,Takeshi Kurei,Kujirai Kenji,[email protected],Präfektur Tochigi,2019/2/9
rekrutieren,Genta Kurusu,Kurusu Genta,[email protected],Präfektur Gunma,2019/2/10
rekrutieren,Takahiro Shioi,Shioi Takahiro,[email protected],Saitama,2019/2/11
rekrutieren,Kiyoto Moroda,Kiyohito Morota,[email protected],Präfektur Chiba,2019/2/12
rekrutieren,Jinguji Yoshifumi,Jinguuji Yoshifumi,[email protected],Tokio,2019/2/13
rekrutieren,Ikemizu Ryo,Satori Ikemizu,[email protected],Präfektur Kanagawa,2019/2/14
rekrutieren,Yusuke Kashii,Yusuke,[email protected],Präfektur Niigata,2019/2/15
rekrutieren,Shin Shugo,Mashugo,[email protected],Präfektur Toyama,2019/2/16
rekrutieren,Hirohiko Nishizono,Nishizono Hirohiko,[email protected],Präfektur Ishikawa,2019/2/17
rekrutieren,Nobuhiro Kuroda,Ich habe es getan, Nobuhiro,[email protected],Präfektur Fukui,2019/2/18
rekrutieren,Masaharu Nezuka,Masaharu Nezuka,[email protected],Präfektur Yamanashi,2019/2/19
rekrutieren,Nakamuro Ikki,Kazuki Nakamuro,[email protected],Präfektur Nagano,2019/2/20
rekrutieren,Kenji Mimata,Kenji Mitsumata,[email protected],Präfektur Gifu,2019/2/21
rekrutieren,Chihiro Mezaki,Chihiro Mesaki,[email protected],Präfektur Shizuoka,2019/2/22
rekrutieren,Yugo Takita,Yugo Takida,[email protected],Präfektur Aichi,2019/2/23
rekrutieren,Acht Wahrheit,Makoto Yamoto,[email protected],Präfektur Mie,2019/2/24
rekrutieren,Akihiro Ori,Orii Akihiro,[email protected],Präfektur Shiga,2019/2/25
rekrutieren,Hirotaka Nomaru,Kein Umaru Hirotaka,[email protected],Kyoto,2019/2/26
rekrutieren,Meiden,Jun Yasushi,[email protected],Präfektur Osaka,2019/2/27
rekrutieren,Kiichiro Yukishima,Kojima Kiichirou,[email protected],Präfektur Hyogo,2019/2/28
rekrutieren,Mitsuya Shimotsuura,Shimotsuura Mitsuya,[email protected],Präfektur Nara,2019/3/1
rekrutieren,Takayuki Azuchi,Und Takayuki,[email protected],Präfektur Wakayama,2019/3/2

D:\OneDrive\Dokument\Project\Python>

image.png

Pandas ist bequem

Ein Datenrahmen ist ein "konzeptioneller Zustand, in dem Array-Daten wie das Spielen mit einer Tabelle in SQL verarbeitet werden können". Sie können Spalten löschen oder NaN durch 0 ersetzen. Sobald Sie sich daran gewöhnt haben, ist es einfacher zu verwenden als ein Array. Ich benutze es oft in R-Sprache, richtig? Datenrahmen. Offizielle Referenz von Pandas

main.py


import pyodbc
import pandas as pd
import lib.PyUtils

#Stellen Sie eine Datenlöschabfrage aus
SQL_TEMPLATE = "DELETE FROM [dbo].[Klient]"       #SQL Original
editSql = SQL_TEMPLATE                          #Ersetzen Sie das ursprüngliche SQL
lib.PyUtils.ExecuteSQLBySQLServer(editSql)      #Ausgeben einer DELETE-Anweisung

#Die CSV, die die Daten enthält, die in die Datenbank gelangen, ist UTF-8
df = pd.read_csv(r"data\customer.csv")

##################################
#Verarbeiten Sie nun die Daten mit Pandas#
##################################

Datenverarbeitung Lv1

Da es sich von hier aus um eine Zeichenfolgenverarbeitung handelt, werde ich dies mit der Python-Konsole tun image.png Ich denke, es gibt drei Dinge, mit denen Sie Datenrahmen auf Geschäftsbasis betreiben können (der vierte ist auch weniger häufig).

Python3.7Console


Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> import pandas as pd

#Bereiten Sie Beispieldaten vor
>>> df = pd.DataFrame([np.nan, 2, np.nan, 0])
>>> df
             0
        0  NaN
        1  2.0
        2  NaN
        3  0.0

# No.1 NaN(Fehlender Wert)Durch 0 ersetzen
>>> df = df.fillna(0)
>>> df
             0
        0  0.0
        1  2.0
        2  0.0
        3  0.0

# No.In 2 Zeichen konvertieren und mit 5 Ziffern Null auffüllen
# astype(str)   ...Typkonvertierung in Zeichenfolge
# .str.         ...Accessor zur str-Methode(.Sie können Befehle wie split verwenden)
>>> df[0] = df[0].astype(str).str.zfill(5)
>>> df
               0
        0  000.0
        1  002.0
        2  000.0
        3  000.0

# No.3 Konvertieren Sie in null, das db versteht
#Es gibt kein NULL (undefiniert), NaN kann nicht verwendet werden(Nicht verfügbar, fehlender Wert)
#In der Standardbibliothek entspricht None Null. Wenn Sie NULL in Sqlite3 einfügen möchten, übergeben Sie None.
>>> df = pd.DataFrame([np.nan, 2, np.nan, 0])
>>> df = df.where(pd.notna(df), None)
>>> df

# No.4 Spalten löschen (Achse)(Bedeutung:Achse)Wann wird auf 1 "der Spalte gesetzt...」のBedeutung合いになるようだ)
>>> df = df.drop([0], axis=1)
>>> df
Empty DataFrame
Columns: []
Index: [0, 1, 2, 3]

Datenverarbeitung Lv2 Füllen Sie fehlende Werte mit den für jede Gruppe angegebenen Werten aus

Bei der Vorverarbeitung statistischer Daten gibt es Dinge wie das Setzen des Durchschnittswerts und das Setzen des Medianwerts in den fehlenden Wert (≈Null-Wert) vorerst.

Beispiel: Dies ist Kaggles Seite zur Analyse der Regressionsanalyse für Eigenheimpreise zeigt den Median der fehlenden Werte nach Gruppe. Der Teil, mit dem Sie füllen möchten. Es scheint im Geschäft sehr wahrscheinlich zu sein. Ich kann mir einen Weg vorstellen, dies mit SQL zu tun ...

  1. Erstellen Sie nach der Aggregation eine Tabelle oder Ansicht
  2. Verwenden Sie Left Join, um nur Nullelemente zu aktualisieren

Die Grundstücksfront ist "Breite der Fassade (Breite der Vorderseite des Hauses)". Welchen Wert soll ich eingeben, wenn LotFrontage fehlt? Ein Beispiel ist die Idee, dass "benachbarte Häuser, dh die Nachbarschaft, ungefähr dem LotFrontage-Wert desselben Hauses entsprechen". Daher verwenden wir dieses Mal den "Medianwert von LotFrontafe von Häusern mit derselben Nachbarschaft" als zusätzlichen Wert.

Der zellförmige Wert unten ist der Medianwert von "Nachbarschaft". Sobald ich na gefunden habe, möchte ich es mit dem "Medianwert der Gruppe nach Element" unten füllen.

Neighborhood LotFrontage(median)
Blmngtn 43
Blueste 24
BrDale 21
BrkSide 52
ClearCr 80
CollgCr 70
Crawfor 74
Edwards 64.5
Gilbert 65
IDOTRR 60
MeadowV 21
Mitchel 73
NAmes 73
NoRidge 91
NPkVill 24
NridgHt 88.5
NWAmes 80
OldTown 60
Sawyer 71
SawyerW 66.5
Somerst 73.5
StoneBr 61.5
SWISU 60
Timber 85
Veenker 68

Der Gruppierungsmechanismus ist Split-Apply-Combine

Geben Sie den Medianwert für na ein (für jede Gruppe werden jedoch unterschiedliche Werte eingegeben).


#Nehmen Sie den LotFrontage-Median für jedes benachbarte Haus (Nachbarschaft) und füllen Sie ihn mit diesem Wert.
print(data['LotFrontage'].isnull().sum()) #Fehlender Wert 259
data["LotFrontage"] = data.groupby("Neighborhood")["LotFrontage"].apply(lambda x: x.fillna(x.median()))
print(data['LotFrontage'].isnull().sum()) #Fehlender Wert 0

Hier finden Sie Python-Lambda Python-Lambda ist leicht zu verstehen Dies ist ein Bild, das "sobald na gefunden wird, während ein vollständiger Scan vertikal durchgeführt wird (= der gesamte Betrag wird verarbeitet), mit dem Medianwert einer Gruppe nach Element gefüllt wird".

Über Lambda


#Lambda formelles Argument:Rückgabewert
#Definieren Sie das in dieser Lambda-Funktion verwendete Argument als x
#x ist der volle Betrag eines der Elemente, aufgeteilt nach Gruppen
#Immerhin wird die Gesamtmenge an na mit dem Medianwert gefüllt.
lambda x: x.fillna(x.median())

"Neighborhood" hat 25 Platten, die mit Blmngtn beginnen und mit Veenker enden. Wenn dies gruppiert ist, wird es intern in 25 Tabellen für jede Gruppe unterteilt (die Gesamtzahl der Details wird durch Hinzufügen aller Details von 25 Tabellen erhalten). Anschließend wird der Inhalt der Klammern der Apply-Funktion auf jede der 25 Tabellen angewendet. ** Nun, was Sie tun, ist dasselbe wie SQL. ** Im Gegenteil, es gibt nur wenige Schritte, wenn Sie den Standpunkt verstehen ("Anwenden" bedeutet "Anwenden"), aber O'Reillys Zahl sagt Für Details kaufen Sie dieses Buch richtig w Es ist ziemlich leicht zu verstehen. apply.png

Statistisches Verarbeitungs-Spickzettel

Dieser Spickzettel ist so einfach zu schreiben, aber schließlich haben Statistiken einen hohen Anfangsschwellenwert. Bei der allgemeinen Programmierung ist es dasselbe, dass Sie nicht wissen, was Sie tun, es sei denn, Sie kopieren es und fügen es ein, nachdem Sie es verstanden haben. Ich konnte keine Statistiken erhalten und habe den Data Science-Kurs der Techacademy ausprobiert (139.000 Yen für 4 Wochen). Grundsätzlich [ein neues Statistiklehrbuch, das mit Python gelernt wurde](https://www.amazon.co.jp/Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%81] % 82% E3% 81% 9F% E3% 82% 89% E3% 81% 97% E3% 81% 84% E7% B5% B1% E8% A8% 88% E5% AD% A6% E3% 81% AE % E6% 95% 99% E7% A7% 91% E6% 9B% B8-AI-TECHNOLOGIE-% E9% A6% AC% E5% A0% B4-% E7% 9C% 9F% E5% 93% 89 / dp Es wird ein Formular sein, das nachzeichnet (4798155063), aber da Sie lernen können, wie man in Kaggle kämpft, kann ich es als Online-Unterrichtsmaterial empfehlen. Ich konnte viele Fragen stellen, die nicht im Buch geschrieben waren, wie zum Beispiel die umgekehrte Frage: "Auf welche Mathematik muss ich zurückgreifen, um dieses Problem jetzt zu lösen?" Ich gebe mein Bestes alleine, aber es tut mir leid, dass ich Arzt geworden bin und Bücher gekauft habe. .. Wo bist du jetzt? Wenn es so aussieht, solltest du dafür bezahlen (wenn du diesen Schritt machst, bist du tatsächlich in einem Zustand, in dem du dich im Dungeon verirrt und das Level zu stark erhöht hast, und du kannst scharfe Fragen stellen: Muskel :). Ich kann es jedoch nicht tun, aber während ich arbeite, kann ich in 4 Wochen 456 Seiten (alle ein Buch) bekommen lol

Cheet 1 (Grundlegender Ablauf aus Datenlesen / Visualisierung / Prüfung fehlender Werte / Füllung fehlender Werte / Prüfung auf Überkorrelation / Modellerstellung / Regressionsgerade / umfassende Prüfung)

Der Punkt beim Erstellen eines Modells besteht darin, eine mathematische Funktion zu erstellen (machen Sie so etwas wie y = x ^ 2, und dann führt der Personal Computer die Berechnung durch Drücken der Formel durch).

Cheet Sheet 1 (Variablennamen werden nicht kontrolliert, da es sich um eine Sammlung handelt)


#◆ Importieren
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%precision 3 #3-stellige Dezimalschreibweise
%matplotlib inline #nur jupyter
sns.set()

#◆ Daten lesen
data = pd.read_csv(r'data/kaggle_housing_price_revised.csv')

#◆ Bestätigung 1 Datenvisualisierung
# 【pairplot】
sns.pairplot(data, hue='Category')  #Der Farbton ist für jede angegebene Gruppe farblich gekennzeichnet
#[Streudiagramm mit Histogramm]
sns.jointplot(x = 'temperature', y = 'beer', data = beer, color = 'black')
#[Box Bart Figur]
sns.boxplot(x = 'Line', y = 'Density', data = data, color = 'gray')
#【Streudiagramm】
fig, ax = plt.subplots()
ax.scatter(x = data['GrLivArea'], y = data['SalePrice'])
plt.ylabel('SalePrice', fontsize=13)
plt.xlabel('GrLivArea', fontsize=13)
plt.show()

#◆ Bestätigung 2 Zeichnen Sie das Verhältnis fehlender Werte zu den einzelnen Daten
all_data_na = (data.isnull().sum() / len(data)) * 100
#Löschen Sie Datensätze, die alle Werte (= 0) enthalten, und ordnen Sie sie in absteigender Reihenfolge an.
all_data_na = all_data_na.drop(all_data_na[all_data_na == 0].index).sort_values(ascending=False)
f, ax = plt.subplots(figsize=(15, 12))
plt.xticks(rotation='90')
sns.barplot(x=all_data_na.index, y=all_data_na)
plt.xlabel('Features', fontsize=15)
plt.ylabel('Percent of missing values', fontsize=15)
plt.title('Percent missing data by feature', fontsize=15)
plt.ylim([0,100]) #Feste Skala mit maximalem Wert auf 100

#◆ Geben Sie fehlende Werte ein (Bestätigung 2)
#Füllen Sie keine:
for col in ('GarageType', 'GarageFinish', 'GarageQual', 'GarageCond'):
    all_data[col] = all_data[col].fillna('None')
#0 füllen:
for col in ('GarageYrBlt', 'GarageArea', 'GarageCars'):
    all_data[col] = all_data[col].fillna(0)
#Medianfüllung:
data["LotFrontage"] = data.groupby("Neighborhood")["LotFrontage"].apply(lambda x: x.fillna(x.median()))

#◆ Löschen stark korrelierter Variablen
threshold = 0.8
#Erstellen und Anzeigen einer Korrelationsmatrix aus Daten. Wenden Sie zu diesem Zeitpunkt den absoluten Wert an und konvertieren Sie den negativen Wert in einen positiven (corr)()Da nur die numerische Zeichenfolge berechnet wird, wird korr_matrix.Spalten werden reduziert)
corr_matrix = data.corr().abs()
#Die Korrelationsmatrix wird in eine obere Dreiecksmatrix (corr) umgewandelt, da die Informationen auf der diagonalen Linie absolut 1 sind und die Informationen auf dem Teil unterhalb der diagonalen Linie mit den Informationen auf dem oberen Teil überlappen._Matrix 0 oder!Angenommen, ein Bool-Typ mit 0!Dies bedeutet, dass 0 durch wo extrahiert wurde)
upper = corr_matrix.where(np.triu(np.ones(corr_matrix.shape), k=1).astype(np.bool))
#Extrahieren Sie Spalten mit einem oder mehreren Werten, die größer oder gleich dem Schwellenwert für andere Spalten als SalePrice sind, aus der oberen Dreiecksmatrix
to_drop = [column for column in upper.columns if any(upper[column] > threshold)]
print('There are %d columns to remove.' % (len(to_drop)))
to_drop.remove('SalePrice')
data_dropped = data.drop(columns = to_drop)

#◆ Dummy-Variable
data_dummied = pd.get_dummies(data_dropped)
data_dummied.head()

#◆ Modell erstellen
#[Minimum Square Methode]
lm_model = smf.ols(formula = 'beer ~ temperature', data = beer).fit()
lm_model.summary()
#[Verallgemeinertes lineares Modell]
glm_model = smf.glm(formula = 'beer ~ temperature', data = data, family=sm.families.Binomial()).fit()
glm_model.summary()
#[AIC-Inspektion] Überprüfen Sie, ob AIC kleiner als das NULL-Modell ist
null_model = smf.ols('beer ~ 1', data = beer).fit()
print('null_model.aic: ', null_model.aic)
print('lm_model.aic: ', lm_model.aic)
print('Wenn die erklärende Temperaturvariable enthalten ist, ist der AIC kleiner, sodass die Vorhersagegenauigkeit höher ist.')

#◆ (Inspektion 1) Gerade zurückgeben
sns.lmplot(x = 'temperature', y = 'beer', data = beer, scatter_kws = {'color': 'black'}, line_kws = {'color': 'black'})
#[Bestätigung 1] Der vorhergesagte Wert der Temperatur von 0 Grad ist der Abschnitt(intercept)Passt zu
lm_model.predict(pd.DataFrame({'temperature':[0]}))
#[Bestätigung 2] Der vorhergesagte Wert der Temperatur von 20 Grad entspricht der Position der Regressionslinie des Meeresgeborenen.
lm_model.predict(pd.DataFrame({'temperature':[20]}))

#◆ (Inspektion 2) Q mit dem ausgewählten Modell-Überprüfen Sie die Normalität der Residuen im Q-Diagramm
sm.qqplot(lm_model.resid, line = 's')
#Der vorhergesagte Wert und der tatsächliche Verkaufspreis können einem Streudiagramm überlagert werden
x = range(len(data))
y = data['SalePrice']
plt.scatter(x, y)
plt.scatter(x, lm_model.predict(data))

Cheet 2 (Zufälliger Wald)

Es ist leicht, einen zufälligen Wald loszuwerden, aber die Interpretation von "was passiert ist" ist wichtig.

Cheet Sheet 2 (Variablennamen werden nicht kontrolliert, da es sich um eine Sammlung handelt)


#Führen Sie eine zufällige Gesamtstruktur aus und berechnen Sie die MSE mit Validierungsdaten
model_random_forest = RandomForestRegressor(criterion='mse').fit(X_train, y_train)
mean_squared_error(y_test, model_random_forest.predict(X_test))
> 1322565474.5486445
#Was ist das für eine Nummer! ?? Wenn Sie das glauben, können Sie mit "der Differenz zwischen den durchschnittlichen zwei Artikeln der Verifizierungsdaten und dem vorhergesagten Wert" überprüfen.
#◆ Machen Sie sich ein Bild von Überzeugung, indem Sie mit mse (durchschnittlicher quadratischer Fehler) und manuellem mse prüfen
np.mean((y_test - model_random_forest.predict(X_test))**2)
> 1322565474.5486445
#Nach dem Erstellen eines Modells y und y^In einem Streudiagramm anordnen
fig, ax = plt.subplots()
ax.scatter(x = y_test, y = model_random_forest.predict(X_test))
plt.ylabel('predict', fontsize=13)
plt.xlabel('SalePrice', fontsize=13)
plt.show()

◆ Handlung eines zufälligen Waldes. SalePrice und prognostizierter Wert werden auf einer geraden Linie ausgerichtet (prognostizierte Leistung ist angemessen). image.png

Cheet 3 (Clustering)

Clustering ist einfach, aber die Interpretation von "was passiert ist" ist wichtig.

Cheet Sheet 3 (Variablennamen werden nicht kontrolliert, da es sich um eine Sammlung handelt)


#Modul laden
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler

#Daten gelesen
dataset = pd.read_csv('data/baseball_salary.csv')

#Inhalt'Schlagdurchschnitt'Wann'Punktpunkt'Nur in der Spalte
dataset = dataset[['Schlagdurchschnitt', 'Punktpunkt']]

#Normalisiert mit MinMaxScaler
dataset_scaled = MinMaxScaler().fit(dataset).transform(dataset)

#Zeichnen Sie nach der Normalisierung ein Streudiagramm der Trefferquote und der Trefferpunkte
fig, ax = plt.subplots()
ax.scatter(x = dataset_scaled[:,0], y = dataset_scaled[:,1])
plt.ylabel('points', fontsize=13)
plt.xlabel('batting average', fontsize=13)
plt.show()

#Bestimmen Sie die Anzahl der Cluster anhand des Ellbogens (6)....)
# WCSS:Die Summe der Abstände vom Knoten zum kürzesten Clusterzentrum (innerhalb)-cluster sum of squares)
wcss = []
n_comps = np.arange(1, 10)
for k in n_comps:
    #Initialisierung von KMeans. init ist standardmäßig"k-means++"
    km = KMeans(n_clusters=k, init='k-means++').fit(dataset_scaled)
    # inertia_Das Attribut enthält den Wert von WCSS
    wcss.append(km.inertia_)
fig = plt.figure(figsize=(6, 4))
plt.plot(n_comps, wcss)
plt.xlabel("# of clusters")
plt.ylabel("WCSS")
plt.show()

#Anpassen und Plotten im Streudiagramm (für die Aussage ist Cluster-Färbung)
km = KMeans(n_clusters=6, init='k-means++').fit(dataset_scaled)
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
colors = ['dodgerblue', 'orange', 'green', 'tomato', 'blueviolet', 'cornflowerblue']
cluster_ids = list(set(km.labels_))
for k in range(len(cluster_ids)):
    average = dataset_scaled[km.labels_ == k, 0]
    points = dataset_scaled[km.labels_ == k, 1]
    ax.scatter(average, points, c=colors[k], s=3, label=f'cluster = {cluster_ids[k]}')
    ax.scatter(average.mean(), points.mean(), marker='*', c=colors[k], s=150)
ax.set_title('Clustering')
ax.set_xlabel('batting average')
ax.set_ylabel('points')
ax.legend(loc='upper right')

image.png

Recommended Posts

Beispiel für die Erstellung einer Python-Umgebung und eine SQL-Ausführung für DB und ein Memo der grundlegenden Verarbeitung für Statistiken 2019
Umgebungskonstruktion von Python und OpenCV
Lernverlauf für die Teilnahme an der Entwicklung von Teamanwendungen mit Python ~ Ergänzung der Grundelemente und Aufbau der jupyterLab-Umgebung ~
Installation von Python 3 und Flask [Zusammenfassung der Umgebungskonstruktion]
[Basic] Vereinheitlichen Sie alles von der Tabellierung bis zur Dashboard-Erstellung! Entwicklung von Datenvisualisierungsanwendungen mit Python und Dash ~ Übersicht über Dash, Umgebungskonstruktion, Beispielausführung ~
[Python3] Herstellen einer Verbindung zur Oracle-Datenbank und Ausführen von SQL [cx_Oracle]
[Python] Kapitel 01-02 Über Python (Ausführung und Installation der Entwicklungsumgebung)
Raspberry Pi + Python + IoT-Gerät, Umgebungskonstruktionsverfahren zum Starten der Bildverarbeitung und des maschinellen Lernens
[Hinweis] Liste der grundlegenden Befehle zum Erstellen einer Python / Conda-Umgebung
[Memo] Bau einer Cygwin-Umgebung
Aufbau einer Python-Umgebung für Mac
Python3-Umgebungskonstruktion (für Anfänger)
So entwickeln Sie in einer virtuellen Python-Umgebung [Memo]
Python-Umgebungskonstruktion und TensorFlow
[MEMO] [Entwicklung der Entwicklungsumgebung] Python
Umgebungskonstruktion von Python2 & 3 (OSX)
[Django] Memo zum Erstellen einer Umgebung von Django + MySQL + Vue.js [Python]
Übersicht über die virtuelle Python-Umgebung und deren Erstellung
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 8 Verarbeitungszeitmessung und Profiler
Ein Memo zum Umschalten zwischen Python2-Serie und 3-Serie in der Anaconda-Umgebung von Mac (Win wird ebenfalls hinzugefügt).
Erstellen und testen Sie eine CI-Umgebung für mehrere Versionen von Python
Aufbau einer Python-Umgebung für diejenigen, die Datenwissenschaftler 2016 werden möchten
So erstellen Sie eine Python- und Jupyter-Ausführungsumgebung mit VSCode
Python-Umgebungskonstruktionsnotiz unter Windows 10
Konstruktionsnotiz für die Python-Umgebung auf dem Mac
Erstellen einer Umgebung für Python3.8 auf einem Mac
Python3 TensorFlow für Mac-Umgebungskonstruktion
Konstruktionsnotiz für die Emacs Python-Entwicklungsumgebung
Vorgehensweise von der AWS CDK (Python) -Entwicklung bis zur AWS-Ressourcenkonstruktion * Für Anfänger
Beispiel für Python-Code für die Exponentialverteilung und die wahrscheinlichste Schätzung (MLE)
Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (1) [Umgebungskonstruktion]
Memo, um nach KPI mit Python zu fragen
[Python] Straße zu Schlangen (1) Umgebungskonstruktion
Erstellen einer Umgebung für Python und maschinelles Lernen (macOS)
Bau einer Entwicklungsumgebung für die Choreonoid-Werkstatt
So erstellen Sie eine Umgebung für die Verwendung mehrerer Python-Versionen auf einem Mac
Erstellen Sie eine Python-Umgebung, um die Theorie und Implementierung von Deep Learning zu erlernen
Memo Nr. 4, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Aufbau der Python3 TensorFlow-Umgebung (Mac und pyenv virtualenv)
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Memo Nr. 3, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Bildverarbeitung mit Python Environment Setup für Windows
Poetry-Virtualenv-Umgebungskonstruktion mit Centos-Sclo-Rh-Python ~ Hinweise
Aufbau der Kissenumgebung - Für Docker + iPython (und OpenCV)
Python-Entwicklungsumgebung - Verwendung von Pyenv und Virtualenv-
Memo Nr. 2, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Einführung in Python "Re" 1 Erstellen einer Ausführungsumgebung
[Django3] Umgebungskonstruktion und Zusammenfassung verschiedener Einstellungen [Python3]
Liste des zu verschiebenden und zu merkenden Python-Codes
Memo Nr. 7, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Von 0 bis Django Entwicklungsumgebung Konstruktion bis Grundbetrieb
Hinweise zum Erstellen einer Python-Umgebung durch Anfänger
Von der Python-Umgebungskonstruktion zur virtuellen Umgebungskonstruktion mit Anaconda
Memo Nr. 6 für Python-Anfänger zum Lesen von "Detaillierte Erklärung der Python-Grammatik"
Memo Nr. 5, dass Python-Anfänger "Detaillierte Erklärung der Python-Grammatik" lesen
Beispiel für das Lesen und Schreiben von CSV mit Python
Vergleich von Python und Ruby (Environment / Grammar / Literal Edition)