De nombreux livres et matériels pédagogiques scikit-learn en ligne utilisent des ensembles de données attachés tels que l'iris et le cancer. Bien sûr, il y a un sentiment de sécurité que les mêmes résultats peuvent être obtenus facilement, mais je pense que beaucoup de gens ont du mal à obtenir un apprentissage en profondeur qui soit en harmonie avec le calendrier. Dans cet article, je vais vous montrer comment lire vos propres données ou données externes sur le net et les analyser avec scicit-learn. (Environnement de vérification: Windows10, Anaconda3, Python3.7.6, Jupyter Notebook 6.0.3) Première version publiée le 23/03/2020
Dans cet article, à titre d'exemple, les données publiées par la communauté d'apprentissage automatique / science des données Kaggle [World Happiness Report ← link](https: //www.kaggle) .com / unsdsn / world-bonheur) est utilisé. J'ai choisi Kaggle parce que j'ai un ensemble de données facile à utiliser pour l'apprentissage automatique, je dois donc m'inscrire en tant qu'utilisateur. Veuillez télécharger à partir du bouton «Télécharger (79 Ko)». Si vous décompressez le fichier zip, vous trouverez 5 fichiers CSV, mais ici nous utiliserons 2019.csv.
--2019.csv est organisé comme "nom de fonctionnalité sur la première ligne, données sur la deuxième ligne et les suivantes" afin qu'il puisse être facilement lu par la bibliothèque d'analyse de données Python ** pandas **. Pour d'autres données, veuillez mouler en supprimant la ligne d'Excel.
--Si le format est différent, comme un fichier Excel (.xls), chargez-le avec Excel, etc., puis exécutez "Fichier-Enregistrer sous" et sélectionnez le format de fichier CSV. Si le délimiteur peut être sélectionné, laissez-le comme, (virgule).
――Il est plus facile de l'enregistrer dans le dossier où se trouvent les fichiers exécutables Python (fichiers py et ipynb).
Vous pouvez le charger directement sans utiliser la bibliothèque, mais pour faciliter le reste du processus, cet article vous montrera comment utiliser les pandas. (Si pandas n'est pas déjà installé, [cet article] Veuillez vous référer à (https://www.sejuku.net/blog/75508) etc. )
import pandas as pd
df = pd.read_csv('2019.csv')
Si le délimiteur est une tabulation, ajoutez l'argument sep = '\ t', et s'il contient du japonais, ajoutez l'argument encoding = 'shift_jis'.
df = pd.read_csv ('filename.csv', sep = '\ t', encoding = 'shift_jis')
Si vous souhaitez placer le fichier de données dans un emplacement différent du fichier exécutable, ajoutez df = pd.read_csv ('data / 2019.csv')
et un chemin relatif. Référence → Conversion / jugement mutuel du chemin absolu et du chemin relatif avec Python, pathlib
print("Confirmation de la clé de jeu de données (nom du montant de la fonction)==>:\n", df.keys())
print('Vérifiez le nombre de lignes et de colonnes dans le dataframe==>\n', df.shape)
Lorsque vous exécutez la commande ci-dessus,
Confirmation de la clé de jeu de données (nom du montant de la fonction)==>:
Index(['Overall rank', 'Country or region', 'Score', 'GDP per capita',
'Social support', 'Healthy life expectancy',
'Freedom to make life choices', 'Generosity',
'Perceptions of corruption'],
dtype='object')
Vérifiez le nombre de lignes et de colonnes dans le dataframe==>
(156, 9)
Il peut être confirmé que les données de 156 échantillons avec 9 caractéristiques peuvent être lues.
Vérifiez s'il y a des valeurs manquantes (Null) dans les données et vérifiez le type de données pour voir s'il s'agit d'une valeur entière uniquement (int) / d'une valeur numérique comprenant une fraction (float) / une chaîne de caractères ou un mélange de chaînes de caractères et de valeurs numériques (objet). Je vais.
#dataframe Vérifiez le nombre de données non manquantes et le type de données dans chaque colonne
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 156 entries, 0 to 155
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Overall rank 156 non-null int64
1 Country or region 156 non-null object
2 Score 156 non-null float64
3 GDP per capita 156 non-null float64
4 Social support 156 non-null float64
5 Healthy life expectancy 156 non-null float64
6 Freedom to make life choices 156 non-null float64
7 Generosity 156 non-null float64
8 Perceptions of corruption 156 non-null float64
dtypes: float64(7), int64(1), object(1)
memory usage: 11.1+ KB
Vous pouvez confirmer qu'il existe 156 données non nulles ⇒ ** aucune valeur manquante **. Le classement global est un entier, le pays ou la région est une chaîne de caractères, et à part cela, il s'agit d'une valeur numérique comprenant une fraction et le type de données est comme prévu. Si la colonne qui doit contenir les nombres est devenue un objet,
#Extraction d'éléments de type non numérique
objectlist = df[['Entrez le nom de la quantité de fonction']][df['Entrez le nom de la quantité de fonction'].apply(lambda s:pd.to_numeric(s, errors='coerce')).isnull()]
objectlist
En exécutant ↑, vous pouvez extraire les données qui sont traitées comme une chaîne de caractères.
Il n'y avait pas de mélange de chaînes de caractères et de valeurs numériques ou de valeurs manquantes dans ces données, mais pour diverses raisons, "blancs", "caractères / symboles autres que" 0 "signifiant zéro" et "nombres avec unités" Dans de nombreux cas, certaines valeurs ne conviennent pas à l'analyse telles quelles.
Veuillez vous référer à cet article etc. et effectuer le traitement approprié (ingénierie de la quantité de fonctionnalités).
import sklearn
worldhappiness = sklearn.utils.Bunch()
Veuillez changer la partie de «bonheur du monde» pour indiquer le nom du jeu de données.
# 'Score'(Score de bonheur)La variable objective'target'À
worldhappiness['target'] = df['Score']
#Variables explicatives'data'Mettre en
worldhappiness['data'] = df.loc[:, ['GDP per capita',
'Social support', 'Healthy life expectancy',
'Freedom to make life choices', 'Generosity',
'Perceptions of corruption']]
↑ Spécifiez 6 colonnes autres que les 3 premières colonnes (fonctionnalités non utilisées pour l'analyse des variables objectives et des ID). Il est facile de copier et coller la sortie des données dans "Confirmation du nom de la quantité de caractéristiques".
#Si vous incluez le nom du montant de la caractéristique, vous pouvez l'utiliser pour la légende du graphique, etc. (ce n'est pas nécessaire)
worldhappiness['feature_names'] = ['GDP per capita',
'Social support', 'Healthy life expectancy',
'Freedom to make life choices', 'Generosity',
'Perceptions of corruption']
#Divisé en ensemble d'entraînement et ensemble de test
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
worldhappiness['data'], worldhappiness['target'], random_state=0)
print("X_train shape:", X_train.shape)
print("X_test shape:", X_test.shape)
X_train shape: (117, 6)
X_test shape: (39, 6)
Il a été divisé en 117 données d'entraînement et 39 données de test. (6 est le nombre d'items variables explicatifs)
Je pense que cela passera à l'analyse automatique. Si vous avez des erreurs ou des questions, n'hésitez pas à commenter.
Recommended Posts