Exemple de construction d'environnement Python et d'exécution SQL vers DB et mémo de traitement de base pour les statistiques 2019

Postscript 20180611

Cette page est basée sur l'hypothèse qu'elle est autonome sur Windows, mais j'ai écrit la dernière version de l'installation en utilisant le VPS de Sakura. Regardez lentement! : détendu: Note d'installation LAMP + WP + Py 2018

Postscript 20180816

La dernière version de 2018 (par VisualStudio) pour créer un environnement autonome sous Windows est maintenant disponible! Regardez lentement! : détendu: Notes sur la création d'un environnement Python et l'exécution de SQL sur une base de données 2018

Postscript 20190201

Puisqu'il y a beaucoup de vues, je vais passer en revue tout le contenu. Comme prévu, le nombre de pages japonaises a considérablement augmenté après trois ans: assoupli:

Page de référence

Installer Python3

Installation de Python 3

Lieu d'installation


C:\Python

Télécharger (version 64 bits)

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

Ajouter le chemin à la variable d'environnement avant l'installation

Cochez "Ajouter Python 3.x à PATH". Ensuite, l'invite de commande reconnaîtra python. J'ai choisi Personnaliser l'installation parce que je voulais changer l'emplacement d'installation. image.png

Vérification

Variables environnementales (très importantes)

Lorsque vous appuyez sur le bouton de démarrage et tapez "en" (= environnement), "Modifier les variables d'environnement système" apparaîtra, alors assurez-vous que l'emplacement d'installation est enregistré. image.png image.png

invite de commande

Appuyez sur le bouton de démarrage et tapez "cmd" pour faire apparaître "l'invite de commande". En définissant la variable d'environnement, la commande python Nantoka peut être passée. image.png

Vérifiez la version Python


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

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

Liste les bibliothèques actuellement dans (rien)


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

image.png

Fréquence d'utilisation Installation du package démon

pyodbc est utilisé pour la connexion db pandas est une bibliothèque qui lit et analyse facilement csv et xls.

Mettez les pandas et pyodbc dedans pour le moment


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

Répertoriez les bibliothèques actuellement en


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

Déplacer le répertoire

Les bases de MS-DOS. Déplacer lors de l'exécution d'un programme python

C'est pourquoi je choisis ce répertoire comme lieu de travail


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

Comment exécuter le programme

Déplacer vers le répertoire contenant le programme à exécuter "cd C: \ xxxx \ xxxx .." Vous pouvez exécuter le programme en tapant "python xxxx.py".

main.py


print("Hello world!")

Tu l'as fait!


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

Si vous créez votre propre bibliothèque

Résumé de l'importation Python Par exemple, disons que vous avez créé une bibliothèque pratique appelée "PyUtils.py" et que vous l'avez stockée dans un répertoire appelé "lib", non? Ensuite, vous pouvez appeler une bibliothèque pratique (= fonction définie par l'utilisateur?) Avec le mot réservé "Importer" de main.py, mais il y a deux façons de le faire. 2 est un chant plus court, mais lequel est-ce?

État actuel du répertoire


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

Comment importer 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")

tester


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

Comment importer 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")

tester


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

Créer un csv à lire avec UTF-8

VisualStudioCode Vraiment: détendu: Ah, c'est un joli nom car il est fait avec un générateur de nom (ce générateur est également utile avec ça) image.png

(Mettez celui que vous pouvez copier et coller)

Affiliation Nom complet Nom complet(Merveille) adresse mail adresse de rue anniversaire
recruter Honda Mamoru Honda Mamoru [email protected] Hokkaido 2019/2/1
recruter Kengo Hayasaka Hayasaka Kengo [email protected] Préfecture d'Aomori 2019/2/2
recruter Shin Tateishi Procéder [email protected] Préfecture d'Iwate 2019/2/3
recruter Takayuki Washio Takayuki Washio [email protected] Préfecture de Miyagi 2019/2/4
recruter Takuji Guo Kakutakuji [email protected] Akita 2019/2/5
recruter Mikio Ogushi Mikio Ogushi [email protected] Préfecture de Yamagata 2019/2/6
recruter Norihiko Shimanuki Shimanuki Norihiko [email protected] Préfecture de Fukushima 2019/2/7
recruter Hidetaka Kojo Hidetaka Kojo [email protected] Préfecture d'Ibaraki 2019/2/8
recruter Takeshi Kurei Kujirai Kenji [email protected] Préfecture de Tochigi 2019/2/9
recruter Genta Kurusu Kurusu Genta [email protected] Préfecture de Gunma 2019/2/10
recruter Takahiro Shioi Shioi Takahiro [email protected] Saitama 2019/2/11
recruter Kiyoto Moroda Kiyohito Morota [email protected] Préfecture de Chiba 2019/2/12
recruter Jinguji Yoshifumi Jinguuji Yoshifumi [email protected] Tokyo 2019/2/13
recruter Ikemizu Ryo Satori Ikemizu [email protected] Préfecture de Kanagawa 2019/2/14
recruter Yusuke Kashii Yusuke [email protected] Préfecture de Niigata 2019/2/15
recruter Shin Shugo Mashugo [email protected] Préfecture de Toyama 2019/2/16
recruter Hirohiko Nishizono Nishizono Hirohiko [email protected] Préfecture d'Ishikawa 2019/2/17
recruter Nobuhiro Kuroda Je l'ai fait Nobuhiro [email protected] Préfecture de Fukui 2019/2/18
recruter Masaharu Nezuka Masaharu Nezuka [email protected] Préfecture de Yamanashi 2019/2/19
recruter Nakamuro Ikki Kazuki Nakamuro [email protected] Préfecture de Nagano 2019/2/20
recruter Kenji Mimata Kenji Mitsumata [email protected] Préfecture de Gifu 2019/2/21
recruter Chihiro Mezaki Chihiro Mesaki [email protected] Préfecture de Shizuoka 2019/2/22
recruter Yugo Takita Yugo Takida [email protected] Préfecture d'Aichi 2019/2/23
recruter Huit vérité Makoto Yamoto [email protected] Préfecture de Mie 2019/2/24
recruter Akihiro Ori Orii Akihiro [email protected] Préfecture de Shiga 2019/2/25
recruter Hirotaka Nomaru Pas d'Umaru Hirotaka [email protected] Kyoto 2019/2/26
recruter Éviter Jun Yasushi [email protected] Préfecture d'Osaka 2019/2/27
recruter Kiichiro Yukishima Kojima Kiichirou [email protected] Préfecture de Hyogo 2019/2/28
recruter Mitsuya Shimotsuura Shimotsuura Mitsuya [email protected] Préfecture de Nara 2019/3/1
recruter Takayuki Azuchi Et Takayuki [email protected] Préfecture de Wakayama 2019/3/2

Configuration de SQL Server

db utilise SQL Server Le moteur SQL Server et Manegement Studio (logiciel client à utiliser) sont différents. Téléchargement du moteur SQL Server image.png image.png image.png

Connexion locale SQL Server

image.png

Ajouter un utilisateur

Nom d'utilisateur: python Mot de passe: python image.png image.png Postscript: Lorsque vous faites Django, vérifiez "db_ddladmin" ici (CREATE TABLE etc. peut être émis) image.png

dépannage

Même si vous augmentez le nombre d'utilisateurs appelés python, vous ne pouvez pas vous connecter sauf si vous passez en mode d'authentification SQL Server. Si vous modifiez cela, n'oubliez pas de redémarrer le serveur. image.png image.png image.png

Créer une base de données

image.png image.png

Créer une table

CREATETABLE.sql


CRÉER UN CLIENT TABLE(
	  [Affiliation] NVARCHAR(20) NULL
    , [Nom complet] NVARCHAR(20) NULL
    , [Nom (Kana)] NVARCHAR(20) NULL
    , [adresse mail] NVARCHAR(20) NULL
    , [adresse de rue] TEXT NULL
    , [anniversaire] NVARCHAR(20) NULL
);

Voici un exemple d'une opération db super spécifique!

main.py


import pyodbc
import pandas as pd
import lib.PyUtils

#Émettre une requête de suppression de données
SQL_TEMPLATE = "DELETE FROM [dbo].[client]"       #SQL original
editSql = SQL_TEMPLATE                          #Remplacez le SQL d'origine
lib.PyUtils.ExecuteSQLBySQLServer(editSql)      #Émettre une instruction DELETE

#Le CSV qui contient les données qui vont dans la base de données est UTF-8
df = pd.read_csv(r"data\customer.csv")

#Émettre une requête de données supplémentaire
SQL_TEMPLATE = "INSERT INTO [dbo].[client]([Affiliation],[Nomcomplet],[Nomcomplet(かな)],[adressemail],[adressederue],[anniversaire])VALUES('{0}','{1}','{2}','{3}','{4}','{5}')"
for line in df.values:
    editSql = SQL_TEMPLATE                      #SQL original
    for i,col in enumerate(line):               #Remplacez le SQL d'origine
        editSql = editSql.replace('{' + str(i) + '}', col)
    lib.PyUtils.ExecuteSQLBySQLServer(editSql)  #Émission de la déclaration INSERT

#Émettre une requête de sélection
SQL_TEMPLATE = "SELECT * FROM [dbo].[client]"     #SQL original
editSql = SQL_TEMPLATE                          #Remplacez le SQL d'origine
df = lib.PyUtils.ReadQueryBySQLServer(editSql)  #Émission de l'instruction SELECT
for line in df.values:
    print(','.join(line))                       #Préparez et diffusez des résultats SQL

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)

Vérification

tester


D:\OneDrive\document\Project\Python> python main.py
recruter,Honda Mamoru,Honda Mamoru,[email protected],Hokkaido,2019/2/1
recruter,Kengo Hayasaka,Hayasaka Kengo,[email protected],Préfecture d'Aomori,2019/2/2
recruter,Shin Tateishi,Procéder,[email protected],Préfecture d'Iwate,2019/2/3
recruter,Takayuki Washio,Takayuki Washio,[email protected],Préfecture de Miyagi,2019/2/4
recruter,Takuji Guo,Kakutakuji,[email protected],Akita,2019/2/5
recruter,Mikio Ogushi,Mikio Ogushi,[email protected],Préfecture de Yamagata,2019/2/6
recruter,Norihiko Shimanuki,Shimanuki Norihiko,[email protected],Préfecture de Fukushima,2019/2/7
recruter,Hidetaka Kojo,Hidetaka Kojo,[email protected],Préfecture d'Ibaraki,2019/2/8
recruter,Takeshi Kurei,Baleine Kenji,[email protected],Préfecture de Tochigi,2019/2/9
recruter,Genta Kurusu,Kurusu Genta,[email protected],Préfecture de Gunma,2019/2/10
recruter,Takahiro Shioi,Shioi Takahiro,[email protected],Saitama,2019/2/11
recruter,Kiyoto Moroda,Kiyohito Morota,[email protected],Préfecture de Chiba,2019/2/12
recruter,Jinguji Yoshifumi,Jinguuji Yoshifumi,[email protected],Tokyo,2019/2/13
recruter,Ikemizu Ryo,Satori Ikemizu,[email protected],Préfecture de Kanagawa,2019/2/14
recruter,Yusuke Kashii,Yusuke,[email protected],Préfecture de Niigata,2019/2/15
recruter,Shin Shugo,Mashugo,[email protected],Préfecture de Toyama,2019/2/16
recruter,Hirohiko Nishizono,Nishizono Hirohiko,[email protected],Préfecture d'Ishikawa,2019/2/17
recruter,Nobuhiro Kuroda,Je l'ai fait Nobuhiro,[email protected],Préfecture de Fukui,2019/2/18
recruter,Masaharu Nezuka,Masaharu Nezuka,[email protected],Préfecture de Yamanashi,2019/2/19
recruter,Nakamuro Ikki,Kazuki Nakamuro,[email protected],Préfecture de Nagano,2019/2/20
recruter,Kenji Mimata,Kenji Mitsumata,[email protected],Préfecture de Gifu,2019/2/21
recruter,Chihiro Mezaki,Chihiro Mesaki,[email protected],Préfecture de Shizuoka,2019/2/22
recruter,Yugo Takita,Yugo Takida,[email protected],Préfecture d'Aichi,2019/2/23
recruter,Huit vérité,Makoto Yamoto,[email protected],Préfecture de Mie,2019/2/24
recruter,Akihiro Ori,Orii Akihiro,[email protected],Préfecture de Shiga,2019/2/25
recruter,Hirotaka Nomaru,Pas d'Umaru Hirotaka,[email protected],Kyoto,2019/2/26
recruter,Éviter,Jun Yasushi,[email protected],Préfecture d'Osaka,2019/2/27
recruter,Kiichiro Yukishima,Kojima Kiichirou,[email protected],Préfecture de Hyogo,2019/2/28
recruter,Mitsuya Shimotsuura,Shimotsuura Mitsuya,[email protected],Préfecture de Nara,2019/3/1
recruter,Takayuki Azuchi,Et Takayuki,[email protected],Préfecture de Wakayama,2019/3/2

D:\OneDrive\document\Project\Python>

image.png

pandas c'est pratique

Une trame de données est un "état conceptuel dans lequel les données de tableau peuvent être traitées comme jouer avec une table en SQL". Vous pouvez supprimer des colonnes ou remplacer NaN par 0. Donc, une fois que vous vous y êtes habitué, c'est plus facile à utiliser qu'un tableau. Je l'utilise souvent en langage R, n'est-ce pas? Référence officielle de Pandas

main.py


import pyodbc
import pandas as pd
import lib.PyUtils

#Émettre une requête de suppression de données
SQL_TEMPLATE = "DELETE FROM [dbo].[client]"       #SQL original
editSql = SQL_TEMPLATE                          #Remplacez le SQL d'origine
lib.PyUtils.ExecuteSQLBySQLServer(editSql)      #Émettre une instruction DELETE

#Le CSV qui contient les données qui vont dans la base de données est UTF-8
df = pd.read_csv(r"data\customer.csv")

##################################
#Traitez maintenant les données avec des pandas#
##################################

Traitement des données Lv1

A partir de là, c'est le traitement des chaînes, donc je vais le faire avec la console Python image.png Je pense qu'il y a trois choses pour lesquelles vous pouvez exploiter des trames de données sur une base commerciale (la quatrième est également moins fréquente).

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

#Préparer des exemples de données
>>> df = pd.DataFrame([np.nan, 2, np.nan, 0])
>>> df
             0
        0  NaN
        1  2.0
        2  NaN
        3  0.0

# No.1 NaN(Valeur manquante)Remplacer par 0
>>> df = df.fillna(0)
>>> df
             0
        0  0.0
        1  2.0
        2  0.0
        3  0.0

# No.Convertir en 2 caractères et remplir avec 5 chiffres zéro
# astype(str)   ...Conversion de type en chaîne
# .str.         ...Accesseur à la méthode str(.Vous pourrez utiliser des commandes telles que fractionner)
>>> 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 Convertir en null que db comprend
#Il n'y a pas de NULL (non défini), NaN ne peut pas être utilisé(Non disponible, valeur manquante)
#Dans la bibliothèque standard, None correspond à Null. Si vous voulez mettre NULL dans Sqlite3, passez None.
>>> df = pd.DataFrame([np.nan, 2, np.nan, 0])
>>> df = df.where(pd.notna(df), None)
>>> df

# No.Supprimer 4 colonnes (axe)(sens:axe)Quand est défini sur 1, "de la colonne...」のsens合いになるようだ)
>>> df = df.drop([0], axis=1)
>>> df
Empty DataFrame
Columns: []
Index: [0, 1, 2, 3]

Traitement des données Lv2 Remplissez les valeurs manquantes avec les valeurs spécifiées pour chaque groupe

Dans le prétraitement des données statistiques, il y a des choses telles que l'insertion de la valeur moyenne et l'insertion de la valeur médiane pour la valeur manquante (≈Null value) pour le moment.

Par exemple, This is Kaggle's Home Price Forecast Regression Analysis Page montre les valeurs médianes manquantes par groupe. La partie que vous souhaitez remplir. Cela semble très probable dans les affaires. Je peux penser à un moyen de le faire avec SQL ...

  1. Créez une table ou une vue après agrégation
  2. Utilisez la jointure gauche pour mettre à jour uniquement les éléments nuls

La façade du lot est "largeur de la façade (largeur de la façade de la maison)". Quelle valeur dois-je indiquer si LotFrontage est manquant? Un exemple est l'idée que «les maisons de quartier, c'est-à-dire le« quartier », seront à peu près égales à la valeur LotFrontage de la même maison». Par conséquent, cette fois, nous utiliserons "la médiane de LotFrontafe des maisons avec le même quartier" comme valeur supplémentaire.

La forme de cellule ci-dessous est la valeur médiane de «voisinage». Dès que je trouve na, je veux le remplir avec la "valeur médiane du groupe par élément" ci-dessous.

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

Le mécanisme de regroupement est divisé-appliquer-combiner

Remplissez avec la valeur médiane pour na (cependant, des valeurs différentes sont entrées pour chaque groupe)


#Prenez la médiane LotFrontage pour chaque maison voisine (quartier) et remplissez-la avec cette valeur.
print(data['LotFrontage'].isnull().sum()) #Valeur manquante 259
data["LotFrontage"] = data.groupby("Neighborhood")["LotFrontage"].apply(lambda x: x.fillna(x.median()))
print(data['LotFrontage'].isnull().sum()) #Valeur manquante 0

Voir ici pour Python lambda Python lambda est facile à comprendre Il s'agit d'une image qui "dès que na est trouvé en effectuant une analyse complète verticalement (= le montant total est traité), remplissez-la avec la valeur médiane de tout groupe par élément".

À propos de Lambda


#argument formel lambda:Valeur de retour
#Définissez l'argument utilisé dans cette fonction lambda comme x
#x est le montant total de l'un des éléments divisé par groupe
#Après tout, il sera rempli avec la valeur médiane pour tous les na.
lambda x: x.fillna(x.median())

"Neighborhood" a 25 enregistrements commençant par Blmngtn et se terminant par Veenker. Lorsqu'il est groupé, il est divisé en interne en 25 tableaux pour chaque groupe (le nombre total de détails est obtenu en ajoutant tous les détails de 25 tableaux). Ensuite, le contenu des parenthèses de la fonction apply est appliqué à chacune des 25 tables. ** Eh bien, ce que vous faites est le même que SQL ** Au contraire, il est écrit comme la figure d'O'Reilly qu'il y a quelques étapes si vous comprenez le point de vue («appliquer» signifie «appliquer»). Pour plus de détails, achetez ce livre correctement w Il est assez facile à comprendre. apply.png

Aide-mémoire sur le traitement statistique

Cette feuille de triche est écrite si facilement, mais après toutes les statistiques ont un premier seuil élevé. C'est la même chose avec la programmation générale que vous ne savez pas ce que vous faites à moins de le copier et de le coller après l'avoir compris. Je n'ai pas pu obtenir de statistiques, j'ai donc essayé le cours de science des données de Techacademy (139 000 ¥ pour 4 semaines). Fondamentalement, [nouveau manuel de statistiques appris avec Python](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-TECHNOLOGY-% E9% A6% AC% E5% A0% B4-% E7% 9C% 9F% E5% 93% 89 / dp Ce sera un formulaire qui trace / 4798155063), mais comme vous pouvez apprendre à vous battre à Kaggle, je peux le recommander comme matériel pédagogique en ligne. J'ai pu poser un grand nombre de questions qui n'étaient pas écrites dans le livre, comme la question de secours, "À quelles mathématiques dois-je revenir pour résoudre ce problème maintenant?" Je fais de mon mieux tout seul, mais je suis désolé d'avoir fini par devenir médecin en achetant des livres. .. Où es tu maintenant? Si cela ressemble à ceci, vous devriez payer pour cela (si vous franchissez cette étape, vous êtes en fait dans un état où vous êtes perdu dans le donjon et que vous avez trop élevé le niveau, et vous pouvez poser des questions pointues: muscle :). Cependant, je ne peux pas le faire, mais en travaillant, je peux obtenir 456 pages (un seul livre) en 4 semaines lol

Cheet 1 (flux de base de la lecture / visualisation des données / inspection des valeurs manquantes / remplissage des valeurs manquantes / inspection de la surcorrélation / création de modèle / ligne de régression / inspection complète)

Le but de faire un modèle est de créer une fonction mathématique (faire quelque chose comme y = x ^ 2 et ensuite l'ordinateur personnel effectuera le calcul en poussant la formule)

Cheet sheet 1 (Les noms de variables ne sont pas contrôlés car il s'agit d'une collection)


#◆ Importer
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%precision 3 #Notation décimale à 3 chiffres
%matplotlib inline #jupyter seulement
sns.set()

#◆ Lire les données
data = pd.read_csv(r'data/kaggle_housing_price_revised.csv')

#◆ Confirmation 1 Visualisation des données
# 【pairplot】
sns.pairplot(data, hue='Category')  #la teinte est codée par couleur pour chaque groupe spécifié
#[Diagramme de dispersion avec histogramme]
sns.jointplot(x = 'temperature', y = 'beer', data = beer, color = 'black')
#[Figure barbe de boîte]
sns.boxplot(x = 'Line', y = 'Density', data = data, color = 'gray')
#【Nuage de points】
fig, ax = plt.subplots()
ax.scatter(x = data['GrLivArea'], y = data['SalePrice'])
plt.ylabel('SalePrice', fontsize=13)
plt.xlabel('GrLivArea', fontsize=13)
plt.show()

#◆ Confirmation 2 Représente graphiquement le rapport des valeurs manquantes à chaque donnée
all_data_na = (data.isnull().sum() / len(data)) * 100
#Supprimez les enregistrements contenant toutes les valeurs (= 0) et organisez-les par ordre décroissant.
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]) #Échelle fixe avec valeur maximale fixée à 100

#◆ Remplissez les valeurs manquantes (confirmation 2)
#Remplir aucun:
for col in ('GarageType', 'GarageFinish', 'GarageQual', 'GarageCond'):
    all_data[col] = all_data[col].fillna('None')
#0 remplissage:
for col in ('GarageYrBlt', 'GarageArea', 'GarageCars'):
    all_data[col] = all_data[col].fillna(0)
#Remplissage médian:
data["LotFrontage"] = data.groupby("Neighborhood")["LotFrontage"].apply(lambda x: x.fillna(x.median()))

#◆ Suppression de variables fortement corrélées
threshold = 0.8
#Créez et affichez une matrice de corrélation à partir des données. À ce moment, appliquez la valeur absolue et convertissez la valeur négative en valeur positive (corr)()Puisque seule la chaîne numérique est calculée, corr_matrix.les colonnes sont réduites)
corr_matrix = data.corr().abs()
#La matrice de corrélation est convertie en une matrice triangulaire supérieure (corr) car les informations sur la ligne diagonale sont absolument 1 et les informations sur la partie en dessous de la ligne diagonale chevauchent les informations sur la partie supérieure._matrice 0 ou!En supposant un type booléen avec 0!Cela signifie que 0 a été extrait par où)
upper = corr_matrix.where(np.triu(np.ones(corr_matrix.shape), k=1).astype(np.bool))
#Extraire les colonnes avec une ou plusieurs valeurs supérieures ou égales au seuil pour les colonnes autres que SalePrice de la matrice triangulaire supérieure
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)

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

#◆ Création d'un modèle
#[Méthode du carré minimum]
lm_model = smf.ols(formula = 'beer ~ temperature', data = beer).fit()
lm_model.summary()
#[Modèle linéaire généralisé]
glm_model = smf.glm(formula = 'beer ~ temperature', data = data, family=sm.families.Binomial()).fit()
glm_model.summary()
#[Inspection AIC] Voir si AIC est plus petit que le modèle NULL
null_model = smf.ols('beer ~ 1', data = beer).fit()
print('null_model.aic: ', null_model.aic)
print('lm_model.aic: ', lm_model.aic)
print('Si la variable explicative de température est incluse, l'AIC sera plus petite, donc la précision de la prédiction sera plus élevée.')

#◆ (Inspection 1) Retour en ligne droite
sns.lmplot(x = 'temperature', y = 'beer', data = beer, scatter_kws = {'color': 'black'}, line_kws = {'color': 'black'})
#[Confirmation 1] La valeur prédite de la température de 0 degré est la section(intercept)Correspond avec
lm_model.predict(pd.DataFrame({'temperature':[0]}))
#[Confirmation 2] La valeur prévue de la température de 20 degrés correspond à la position de la droite de régression marine.
lm_model.predict(pd.DataFrame({'temperature':[20]}))

#◆ (Inspection 2) Q en utilisant le modèle sélectionné-Vérifier la normalité des résidus sur le diagramme Q
sm.qqplot(lm_model.resid, line = 's')
#La valeur prévue et le SalePrice réel peuvent être superposés sur un diagramme de dispersion
x = range(len(data))
y = data['SalePrice']
plt.scatter(x, y)
plt.scatter(x, lm_model.predict(data))

Cheet 2 (forêt aléatoire)

Il est facile de se débarrasser d'une forêt aléatoire, mais l'interprétation de «ce qui s'est passé» est importante.

Cheet sheet 2 (Les noms de variables ne sont pas contrôlés car il s'agit d'une collection)


#Exécutez une forêt aléatoire et calculez MSE avec des données de validation
model_random_forest = RandomForestRegressor(criterion='mse').fit(X_train, y_train)
mean_squared_error(y_test, model_random_forest.predict(X_test))
> 1322565474.5486445
#Quel est le nombre! ?? Si vous pensez que, vous pouvez vérifier avec "la différence entre les deux articles moyens des données de vérification et la valeur prévue"
#◆ Obtenez un sentiment de conviction en vérifiant avec mse (erreur quadratique moyenne) par rapport à mse manuel
np.mean((y_test - model_random_forest.predict(X_test))**2)
> 1322565474.5486445
#Après avoir fait un modèle, y et y^Organiser dans un diagramme de dispersion
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()

◆ Parcelle de forêt aléatoire. Le prix de vente et la valeur prévue sont alignés sur une ligne droite (les performances prévues sont raisonnables) image.png

Cheet 3 (regroupement)

Le regroupement est facile, mais l'interprétation de «ce qui s'est passé» est importante.

Cheet sheet 3 (Les noms de variables ne sont pas contrôlés car il s'agit d'une collection)


#Module de charge
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

#Lecture des données
dataset = pd.read_csv('data/baseball_salary.csv')

#Contenu'moyenne au bâton'Quand'Point de point'Seulement dans la colonne
dataset = dataset[['moyenne au bâton', 'Point de point']]

#Normalisé avec MinMaxScaler
dataset_scaled = MinMaxScaler().fit(dataset).transform(dataset)

#Dessinez un diagramme de dispersion du taux de réussite et des points de vie après normalisation
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()

#Déterminez le nombre de grappes en regardant le coude (6)...)
# WCSS:Somme des distances entre le nœud et le centre de cluster le plus court (à l'intérieur)-cluster sum of squares)
wcss = []
n_comps = np.arange(1, 10)
for k in n_comps:
    #Initialisation de KMeans. init est par défaut"k-means++"
    km = KMeans(n_clusters=k, init='k-means++').fit(dataset_scaled)
    # inertia_L'attribut contient la valeur de 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()

#Ajuster et tracer sur le diagramme de dispersion (pour l'instruction est la coloration de cluster)
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

Exemple de construction d'environnement Python et d'exécution SQL vers DB et mémo de traitement de base pour les statistiques 2019
Construction d'environnement de python et opencv
Historique d'apprentissage pour participer au développement d'applications d'équipe avec Python ~ Supplément d'éléments de base et construction de l'environnement jupyterLab ~
Installation de Python 3 et Flask [Résumé de la construction de l'environnement]
[De base] Unifiez tout, de la tabulation à la création du tableau de bord! Développement d'applications de visualisation de données avec Python et Dash ~ Présentation de Dash, construction d'environnement, exécution d'exemples ~
[Python3] Connexion à Oracle Database et exécution de SQL [cx_Oracle]
[Python] Chapitre 01-02 À propos de Python (Exécution et installation de l'environnement de développement)
Raspberry Pi + python + appareil IoT, procédure de construction d'environnement pour démarrer le traitement d'image et l'apprentissage automatique
[Note] Liste des commandes de base pour la construction d'un environnement python / conda
[Memo] Construction de l'environnement cygwin
Construction de l'environnement Python pour Mac
Construction de l'environnement Python3 (pour les débutants)
Comment développer dans un environnement virtuel Python [Memo]
Construction d'environnement Python et TensorFlow
[MEMO] [Construction de l'environnement de développement] Python
Construction de l'environnement de python2 & 3 (OSX)
[Django] Mémo pour créer un environnement de Django + MySQL + Vue.js [Python]
Vue d'ensemble de l'environnement virtuel Python et comment le créer
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 8 Mesure du temps de traitement et profileur
Un mémo pour basculer entre la série python2 et la série 3 dans l'environnement anaconda de mac (win est également ajouté)
Créer et tester un environnement CI pour plusieurs versions de Python
Créer un environnement Python pour ceux qui veulent devenir des data scientists 2016
Comment créer un environnement d'exécution Python et Jupyter avec VSCode
Mémo de construction de l'environnement Python sur Windows 10
Mémo de construction de l'environnement Python sur Mac
Construire un environnement pour python3.8 sur Mac
Construction de l'environnement Python3 TensorFlow pour Mac
Mémo de construction de l'environnement de développement Emacs Python
Procédure du développement AWS CDK (Python) à la construction de ressources AWS * Pour les débutants
Exemple de code python pour la distribution exponentielle et l'estimation la plus probable (MLE)
Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (1) [Construction de l'environnement]
Mémo pour demander des KPI avec python
[Python] Road to snakes (1) Construction de l'environnement
Créer un environnement pour Python et l'apprentissage automatique (macOS)
Construction d'un environnement de développement pour l'atelier Choreonoid
Comment créer un environnement pour utiliser plusieurs versions de Python sur un Mac
Créez un environnement python pour apprendre la théorie et la mise en œuvre de l'apprentissage profond
Mémo n ° 4 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Construction de l'environnement Python3 TensorFlow (Mac et pyenv virtualenv)
Préparer l'environnement d'exécution de Python3 avec Docker
Mémo n ° 3 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Traitement d'image avec la configuration de l'environnement Python pour Windows
Construction d'environnement Poetry-virtualenv avec python de centos-sclo-rh ~ Notes
Construction d'un environnement d'oreiller - Pour Docker + iPython (et OpenCV)
environnement de développement python -utilisation de pyenv et virtualenv-
Mémo n ° 2 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Introduction à Python "Re" 1 Construction d'un environnement d'exécution
[Django3] Construction de l'environnement et résumé de divers paramètres [Python3]
Liste de code Python à déplacer et à mémoriser
Mémo n ° 7 que les débutants Python lisent "Explication détaillée de la grammaire Python"
De 0 à la construction de l'environnement de développement Django à l'exploitation de base
Notes sur la création d'un environnement python par les débutants
De la construction d'environnement Python à la construction d'environnement virtuel avec anaconda
Mémo n ° 6 pour les débutants Python à lire "Explication détaillée de la grammaire Python"
Mémo n ° 5 que les débutants Python lisent "Explication détaillée de la grammaire Python"
Exemple de lecture et d'écriture de CSV avec Python
Comparaison de Python et Ruby (Environment / Grammar / Literal Edition)