Ceci est le troisième article qui présente chaque processus de la bibliothèque de prétraitement Python DataLiner. Cette fois, je voudrais vous présenter le système de conversion.
Article de sortie: https://qiita.com/shallowdf20/items/36727c9a18f5be365b37
! pip install -U dataliner
Préparez les données du Titanic comme d'habitude.
import pandas as pd
import dataliner as dl
df = pd.read_csv('train.csv')
target_col = 'Survived'
X = df.drop(target_col, axis=1)
y = df[target_col]
PassengerId | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked |
---|---|---|---|---|---|---|---|---|---|---|
1 | 3 | Braund, Mr. Owen Harris | male | 22 | 1 | 0 | A/5 21171 | 7.250 | NaN | S |
2 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Thayer) | female | 38 | 1 | 0 | PC 17599 | 71.283 | C85 | C |
3 | 3 | Heikkinen, Miss. Laina | female | 26 | 0 | 0 | STON/O2. 3101282 | 7.925 | NaN | S |
4 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35 | 1 | 0 | 113803 | 53.100 | C123 | S |
5 | 3 | Allen, Mr. William Henry | male | 35 | 0 | 0 | 373450 | 8.050 | NaN | S |
StandardScaling / StandardizeData(deprecated) Convertit les données afin qu'elles aient une moyenne de 0 et une distribution de 1. Contrairement aux bibliothèques telles que Sklearn, même si une colonne de catégorie est incluse, seule la chaîne numérique est automatiquement déterminée et elle est renvoyée par pandas DataFrame, le traitement ultérieur est donc facile. Étant donné que StandardizeData a été renommé StandardScaling, un avertissement de dépréciation sera émis et il sera supprimé dans la version 1.3.0.
trans = dl.StandardScaling()
Xt = trans.fit_transform(X)
PassengerId | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked |
---|---|---|---|---|---|---|---|---|---|---|
-1.729 | 0.8269 | Braund, Mr. Owen Harris | male | -0.5300 | 0.4326 | -0.4734 | A/5 21171 | -0.5022 | NaN | S |
-1.725 | -1.5652 | Cumings, Mrs. John Bradley (Florence Briggs Thayer) | female | 0.5714 | 0.4326 | -0.4734 | PC 17599 | 0.7864 | C85 | C |
-1.721 | 0.8269 | Heikkinen, Miss. Laina | female | -0.2546 | -0.4743 | -0.4734 | STON/O2. 3101282 | -0.4886 | NaN | S |
-1.717 | -1.5652 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 0.3649 | 0.4326 | -0.4734 | 113803 | 0.4205 | C123 | S |
-1.714 | 0.8269 | Allen, Mr. William Henry | male | 0.3649 | -0.4743 | -0.4734 | 373450 | -0.4861 | NaN | S |
MinMaxScaling Convertit les données pour qu'elles tiennent entre 0 et 1.
trans = dl.MinMaxScaling()
Xt = trans.fit_transform(X)
PassengerId | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked |
---|---|---|---|---|---|---|---|---|---|---|
0.000000 | 1 | Braund, Mr. Owen Harris | male | 0.2712 | 0.125 | 0 | A/5 21171 | 0.01415 | NaN | S |
0.001124 | 0 | Cumings, Mrs. John Bradley (Florence Briggs Thayer) | female | 0.4722 | 0.125 | 0 | PC 17599 | 0.13914 | C85 | C |
0.002247 | 1 | Heikkinen, Miss. Laina | female | 0.3214 | 0.000 | 0 | STON/O2. 3101282 | 0.01547 | NaN | S |
0.003371 | 0 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 0.4345 | 0.125 | 0 | 113803 | 0.10364 | C123 | S |
0.004494 | 1 | Allen, Mr. William Henry | male | 0.4345 | 0.000 | 0 | 373450 | 0.01571 | NaN | S |
BinarizeNaN Recherche la colonne qui contient la valeur manquante et crée une nouvelle colonne binaire qui vous indique si la colonne était manquante.
trans = dl.BinarizeNaN()
Xt = trans.fit_transform(X)
PassengerId | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked | Age_NaNFlag | Cabin_NaNFlag | Embarked_NaNFlag |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 3 | Braund, Mr. Owen Harris | male | 22 | 1 | 0 | A/5 21171 | 7.250 | NaN | S | 0 | 1 | 0 |
2 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Thayer) | female | 38 | 1 | 0 | PC 17599 | 71.283 | C85 | C | 0 | 0 | 0 |
3 | 3 | Heikkinen, Miss. Laina | female | 26 | 0 | 0 | STON/O2. 3101282 | 7.925 | NaN | S | 0 | 1 | 0 |
4 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35 | 1 | 0 | 113803 | 53.100 | C123 | S | 0 | 0 | 0 |
5 | 3 | Allen, Mr. William Henry | male | 35 | 0 | 0 | 373450 | 8.050 | NaN | S | 0 | 1 | 0 |
CountRowNaN Pour chaque point de données (ligne), comptez le nombre de valeurs manquantes incluses et ajoutez le total des valeurs manquantes en tant que nouvelle quantité d'entités.
trans = dl.CountRowNaN()
Xt = trans.fit_transform(X)
PassengerId | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked | NaN_Totals |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 3 | Braund, Mr. Owen Harris | male | 22 | 1 | 0 | A/5 21171 | 7.250 | NaN | S | 1 |
2 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Thayer) | female | 38 | 1 | 0 | PC 17599 | 71.283 | C85 | C | 0 |
3 | 3 | Heikkinen, Miss. Laina | female | 26 | 0 | 0 | STON/O2. 3101282 | 7.925 | NaN | S | 1 |
4 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35 | 1 | 0 | 113803 | 53.100 | C123 | S | 0 |
5 | 3 | Allen, Mr. William Henry | male | 35 | 0 | 0 | 373450 | 8.050 | NaN | S | 1 |
ImputeNaN Complète les valeurs manquantes. Par défaut, la colonne numérique est complétée par la moyenne et la colonne catégorie est complétée par la valeur la plus fréquente. Il peut être modifié avec num_strategy et cat_strategy.
trans = dl.ImputeNaN()
Xt = trans.fit_transform(X)
PassengerId | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked |
---|---|---|---|---|---|---|---|---|---|---|
1 | 3 | Braund, Mr. Owen Harris | male | 22 | 1 | 0 | A/5 21171 | 7.250 | B96 B98 | S |
2 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Thayer) | female | 38 | 1 | 0 | PC 17599 | 71.283 | C85 | C |
3 | 3 | Heikkinen, Miss. Laina | female | 26 | 0 | 0 | STON/O2. 3101282 | 7.925 | B96 B98 | S |
4 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35 | 1 | 0 | 113803 | 53.100 | C123 | S |
5 | 3 | Allen, Mr. William Henry | male | 35 | 0 | 0 | 373450 | 8.050 | B96 B98 | S |
ClipData Définissez la fraction X et remplacez les données au-dessus et en dessous de la limite supérieure par les limites supérieure et inférieure. Vous pouvez ajuster la quantité que vous souhaitez découper avec l'argument de seuil, qui est par défaut 1%: 99%.
trans = dl.ClipData()
Xt = trans.fit_transform(X)
PassengerId | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked |
---|---|---|---|---|---|---|---|---|---|---|
9.9 | 3 | Braund, Mr. Owen Harris | male | 22 | 1 | 0 | A/5 21171 | 7.250 | NaN | S |
9.9 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Thayer) | female | 38 | 1 | 0 | PC 17599 | 71.283 | C85 | C |
9.9 | 3 | Heikkinen, Miss. Laina | female | 26 | 0 | 0 | STON/O2. 3101282 | 7.925 | NaN | S |
9.9 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35 | 1 | 0 | 113803 | 53.100 | C123 | S |
9.9 | 3 | Allen, Mr. William Henry | male | 35 | 0 | 0 | 373450 | 8.050 | NaN | S |
GroupRareCategory Dans les variables catégorielles, les catégories peu fréquentes sont collectivement remplacées par la chaîne "RareCategory". Aide à réduire la cardinalité. Il est efficace de l'utiliser avant d'appliquer OneHotEncoding. Avec l'argument de seuil, vous pouvez modifier le pourcentage ou moins du nombre de données à remplacer. La valeur par défaut est 1%.
trans = dl.GroupRareCategory()
Xt = trans.fit_transform(X)
PassengerId | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked |
---|---|---|---|---|---|---|---|---|---|---|
1 | 3 | RareCategory | male | 22 | 1 | 0 | RareCategory | 7.250 | NaN | S |
2 | 1 | RareCategory | female | 38 | 1 | 0 | RareCategory | 71.283 | RareCategory | C |
3 | 3 | RareCategory | female | 26 | 0 | 0 | RareCategory | 7.925 | NaN | S |
4 | 1 | RareCategory | female | 35 | 1 | 0 | RareCategory | 53.100 | RareCategory | S |
5 | 3 | RareCategory | male | 35 | 0 | 0 | RareCategory | 8.050 | NaN | S |
Donc, cette fois, j'ai présenté les éléments du système de conversion de DataLiner. Le prétraitement mis en œuvre à ce moment (ver.1.1.6) sera le dernier du système Append qui sera introduit la prochaine fois.
Article sur la version Dataliner: https://qiita.com/shallowdf20/items/36727c9a18f5be365b37 GitHub: https://github.com/shallowdf20/dataliner PyPI: https://pypi.org/project/dataliner/
Recommended Posts