Автоматизація Попередньої Обробки за Допомогою Конвеєрів
Автоматизація попередньої обробки та створення ознак за допомогою конвеєрів scikit-learn забезпечує послідовні та відтворювані результати машинного навчання. Конвеєри дозволяють об'єднувати кроки, такі як масштабування, кодування та відбір ознак, щоб кожне перетворення завжди виконувалося в однаковому порядку.
Щоб створити конвеєр у scikit-learn, визначте список кроків, де кожен крок — це кортеж, що містить унікальну назву кроку (рядок) і об'єкт-трансформер (наприклад, StandardScaler або SelectKBest). Наприклад:
steps = [
("scaler", StandardScaler()),
("feature_selection", SelectKBest(score_func=f_classif, k=2))
]
Далі цей список передається об'єкту Pipeline:
pipeline = Pipeline(steps)
Конвеєр застосовує кожен трансформер по черзі, передаючи вихідні дані одного кроку як вхідні для наступного. Такий підхід не лише економить час, а й знижує ризик витоку даних, роблячи експерименти більш надійними та легкими для відтворення.
Використання ColumnTransformer для підмножин ознак
За допомогою ColumnTransformer можна застосовувати різні конвеєри попередньої обробки до різних підмножин ознак у ваших даних. Наприклад:
# Define column types
numeric_features = ['age', 'fare']
categorical_features = ['embarked', 'sex']
# Preprocessing for numeric features: impute missing values and scale
numeric_transformer = Pipeline([
('imputer', SimpleImputer(strategy='mean')),
('scaler', StandardScaler())
])
# Preprocessing for categorical features: impute missing values and encode
categorical_transformer = Pipeline([
('imputer', SimpleImputer(strategy='most_frequent')),
('encoder', OneHotEncoder(handle_unknown='ignore'))
])
Це дозволяє створити єдиний, уніфікований конвеєр, який коректно обробляє як числові, так і категоріальні типи даних, підтримуючи організованість коду попередньої обробки та забезпечуючи застосування кожного перетворення до відповідних стовпців.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import numpy as np import pandas as pd import seaborn as sns from sklearn.pipeline import Pipeline from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler, OneHotEncoder from sklearn.compose import ColumnTransformer from sklearn.feature_selection import SelectKBest, f_classif # Load the Titanic dataset from seaborn (no warnings!) df = sns.load_dataset('titanic') # Select features and target features = ['age', 'fare', 'embarked', 'sex'] X = df[features] y = df['survived'] # Target variable # Define column types numeric_features = ['age', 'fare'] categorical_features = ['embarked', 'sex'] # Preprocessing for numeric features: impute missing values and scale numeric_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='mean')), ('scaler', StandardScaler()) ]) # Preprocessing for categorical features: impute missing values and encode categorical_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='most_frequent')), ('encoder', OneHotEncoder(handle_unknown='ignore')) ]) # Combine preprocessing steps preprocessor = ColumnTransformer([ ('num', numeric_transformer, numeric_features), ('cat', categorical_transformer, categorical_features) ]) # Build the full pipeline with preprocessing and feature selection pipeline = Pipeline([ ('preprocessing', preprocessor), ('feature_selection', SelectKBest(score_func=f_classif, k=3)) ]) # Fit and transform the data X_transformed = pipeline.fit_transform(X, y) print(f"Original shape: {X.shape}") print(f"Reduced from {X.shape[1]} features to {X_transformed.shape[1]} selected features")
Інтеграція попередньої обробки у ваш навчальний конвеєр забезпечує послідовність перетворень і допомагає запобігти витоку даних як під час навчання, так і під час прогнозування.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain how SelectKBest chooses the top features in this pipeline?
What would happen if I changed the value of k in SelectKBest?
How can I add a classifier to this pipeline after feature selection?
Awesome!
Completion rate improved to 8.33
Автоматизація Попередньої Обробки за Допомогою Конвеєрів
Свайпніть щоб показати меню
Автоматизація попередньої обробки та створення ознак за допомогою конвеєрів scikit-learn забезпечує послідовні та відтворювані результати машинного навчання. Конвеєри дозволяють об'єднувати кроки, такі як масштабування, кодування та відбір ознак, щоб кожне перетворення завжди виконувалося в однаковому порядку.
Щоб створити конвеєр у scikit-learn, визначте список кроків, де кожен крок — це кортеж, що містить унікальну назву кроку (рядок) і об'єкт-трансформер (наприклад, StandardScaler або SelectKBest). Наприклад:
steps = [
("scaler", StandardScaler()),
("feature_selection", SelectKBest(score_func=f_classif, k=2))
]
Далі цей список передається об'єкту Pipeline:
pipeline = Pipeline(steps)
Конвеєр застосовує кожен трансформер по черзі, передаючи вихідні дані одного кроку як вхідні для наступного. Такий підхід не лише економить час, а й знижує ризик витоку даних, роблячи експерименти більш надійними та легкими для відтворення.
Використання ColumnTransformer для підмножин ознак
За допомогою ColumnTransformer можна застосовувати різні конвеєри попередньої обробки до різних підмножин ознак у ваших даних. Наприклад:
# Define column types
numeric_features = ['age', 'fare']
categorical_features = ['embarked', 'sex']
# Preprocessing for numeric features: impute missing values and scale
numeric_transformer = Pipeline([
('imputer', SimpleImputer(strategy='mean')),
('scaler', StandardScaler())
])
# Preprocessing for categorical features: impute missing values and encode
categorical_transformer = Pipeline([
('imputer', SimpleImputer(strategy='most_frequent')),
('encoder', OneHotEncoder(handle_unknown='ignore'))
])
Це дозволяє створити єдиний, уніфікований конвеєр, який коректно обробляє як числові, так і категоріальні типи даних, підтримуючи організованість коду попередньої обробки та забезпечуючи застосування кожного перетворення до відповідних стовпців.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import numpy as np import pandas as pd import seaborn as sns from sklearn.pipeline import Pipeline from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler, OneHotEncoder from sklearn.compose import ColumnTransformer from sklearn.feature_selection import SelectKBest, f_classif # Load the Titanic dataset from seaborn (no warnings!) df = sns.load_dataset('titanic') # Select features and target features = ['age', 'fare', 'embarked', 'sex'] X = df[features] y = df['survived'] # Target variable # Define column types numeric_features = ['age', 'fare'] categorical_features = ['embarked', 'sex'] # Preprocessing for numeric features: impute missing values and scale numeric_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='mean')), ('scaler', StandardScaler()) ]) # Preprocessing for categorical features: impute missing values and encode categorical_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='most_frequent')), ('encoder', OneHotEncoder(handle_unknown='ignore')) ]) # Combine preprocessing steps preprocessor = ColumnTransformer([ ('num', numeric_transformer, numeric_features), ('cat', categorical_transformer, categorical_features) ]) # Build the full pipeline with preprocessing and feature selection pipeline = Pipeline([ ('preprocessing', preprocessor), ('feature_selection', SelectKBest(score_func=f_classif, k=3)) ]) # Fit and transform the data X_transformed = pipeline.fit_transform(X, y) print(f"Original shape: {X.shape}") print(f"Reduced from {X.shape[1]} features to {X_transformed.shape[1]} selected features")
Інтеграція попередньої обробки у ваш навчальний конвеєр забезпечує послідовність перетворень і допомагає запобігти витоку даних як під час навчання, так і під час прогнозування.
Дякуємо за ваш відгук!