Dies ist der dritte Artikel, in dem jeder Prozess der Python-Vorverarbeitungsbibliothek DataLiner vorgestellt wird. Dieses Mal möchte ich das Konvertierungssystem vorstellen.
Artikel veröffentlichen: https://qiita.com/shallowdf20/items/36727c9a18f5be365b37
! pip install -U dataliner
Bereiten Sie die Titanic-Daten wie gewohnt vor.
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) Transformiert die Daten so, dass sie einen Durchschnitt von 0 und eine Verteilung von 1 haben. Im Gegensatz zu Bibliotheken wie Sklearn wird, selbst wenn eine Kategoriespalte enthalten ist, nur die numerische Spalte automatisch ermittelt und von pandas DataFrame zurückgegeben, sodass die nachfolgende Verarbeitung einfach ist. Da StandardizeData in StandardScaling umbenannt wurde, wird eine Verfallswarnung ausgegeben und in Version 1.3.0 gelöscht.
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 Konvertiert die Daten so, dass sie zwischen 0 und 1 passen.
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 Findet die Spalte, die den fehlenden Wert enthält, und erstellt eine neue Binärspalte, die angibt, ob die Spalte fehlt.
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 Zählen Sie für jeden Datenpunkt (Zeile), wie viele fehlende Werte enthalten sind, und addieren Sie die Summe der fehlenden Werte als neue Feature-Menge.
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 Ergänzt fehlende Werte. Die Standardargumente sind, dass die numerische Spalte mit dem Durchschnitt und die Kategoriespalte mit dem häufigsten Wert ergänzt wird. Sie kann mit num_strategy und cat_strategy geändert werden.
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 Definieren Sie den X-Bruch und ersetzen Sie die Daten über und unter der Obergrenze durch die Ober- und Untergrenze. Sie können festlegen, wie viel mit dem Schwellenwertargument abgeschnitten werden soll. Der Standardwert ist 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 In den kategorialen Variablen werden die selten vorkommenden Kategorien gemeinsam durch die Zeichenfolge "RareCategory" ersetzt. Hilft bei der Reduzierung der Kardinalität. Es ist effektiv, es vor dem Anwenden von OneHotEncoding zu verwenden. Mit dem Schwellenwertargument können Sie den Prozentsatz oder weniger der Anzahl der zu ersetzenden Daten ändern. Der Standardwert ist 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 |
Diesmal habe ich also die Elemente des Konvertierungssystems von DataLiner vorgestellt. Die zu diesem Zeitpunkt implementierte Vorverarbeitung (Version 1.1.6) ist die letzte im Append-System, die beim nächsten Mal eingeführt wird.
Artikel zur Veröffentlichung des Dataliner: https://qiita.com/shallowdf20/items/36727c9a18f5be365b37 GitHub: https://github.com/shallowdf20/dataliner PyPI: https://pypi.org/project/dataliner/