Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Перетворення та Виділення Ознак | Техніки Трансформації Даних
Попередня Обробка Даних та Створення Ознак

bookПеретворення та Виділення Ознак

Багато реальних наборів даних містять ознаки з асиметричними розподілами, що може знижувати ефективність моделей машинного навчання. Для зменшення асиметрії та підвищення якості даних можна застосовувати математичні перетворення. Два поширені методи:

  • Логарифмічне перетворення: зменшує сильну позитивну асиметрію за допомогою log(x);
  • Кореневе перетворення: пом'якшує менші ступені асиметрії за допомогою sqrt(x).

Ці методи допомагають зробити розподіли ознак більш схожими на нормальний розподіл і підвищують продуктивність моделей.

123456789101112131415161718192021222324252627282930
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns # Load the Titanic dataset df = sns.load_dataset('titanic') fare = df['fare'] # Apply log transformation (add 1 to handle zeros) fare_log = np.log(fare + 1) # Create side-by-side histogram comparison fig, axes = plt.subplots(1, 2, figsize=(14, 5)) # Original fare axes[0].hist(fare, bins=50, color='skyblue', edgecolor='black', alpha=0.7) axes[0].set_xlabel('Fare ($)', fontsize=12) axes[0].set_ylabel('Frequency', fontsize=12) axes[0].set_title('Original Fare Distribution', fontsize=14, fontweight='bold') axes[0].grid(True, alpha=0.3) # Log-transformed fare axes[1].hist(fare_log, bins=50, color='lightcoral', edgecolor='black', alpha=0.7) axes[1].set_xlabel('Log(Fare + 1)', fontsize=12) axes[1].set_ylabel('Frequency', fontsize=12) axes[1].set_title('Log-Transformed Fare Distribution', fontsize=14, fontweight='bold') axes[1].grid(True, alpha=0.3) plt.tight_layout()
copy
Note
Визначення

Виділення ознак — це процес створення нових ознак із сирих даних для підвищення ефективності моделей машинного навчання.

Це допомагає зробити важливу інформацію більш явною, зменшити шум і іноді знизити розмірність даних. Ефективне виділення ознак може призвести до кращих прогнозів і більш інтерпретованих моделей.

1234567891011
import seaborn as sns import pandas as pd # Load the Titanic dataset df = sns.load_dataset('titanic') # Create a new feature: family_size = sibsp + parch + 1 df['family_size'] = df['sibsp'] + df['parch'] + 1 # Show the first few rows with the new feature print(df[['sibsp', 'parch', 'family_size']].head())
copy
question mark

Яке перетворення буде найбільш доречним для змінної з сильною позитивною асиметрією та лише додатними значеннями?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 3

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you explain why adding 1 to the log transformation is necessary?

What are some other common feature engineering techniques?

How does creating a new feature like family_size help improve model performance?

Awesome!

Completion rate improved to 8.33

bookПеретворення та Виділення Ознак

Свайпніть щоб показати меню

Багато реальних наборів даних містять ознаки з асиметричними розподілами, що може знижувати ефективність моделей машинного навчання. Для зменшення асиметрії та підвищення якості даних можна застосовувати математичні перетворення. Два поширені методи:

  • Логарифмічне перетворення: зменшує сильну позитивну асиметрію за допомогою log(x);
  • Кореневе перетворення: пом'якшує менші ступені асиметрії за допомогою sqrt(x).

Ці методи допомагають зробити розподіли ознак більш схожими на нормальний розподіл і підвищують продуктивність моделей.

123456789101112131415161718192021222324252627282930
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns # Load the Titanic dataset df = sns.load_dataset('titanic') fare = df['fare'] # Apply log transformation (add 1 to handle zeros) fare_log = np.log(fare + 1) # Create side-by-side histogram comparison fig, axes = plt.subplots(1, 2, figsize=(14, 5)) # Original fare axes[0].hist(fare, bins=50, color='skyblue', edgecolor='black', alpha=0.7) axes[0].set_xlabel('Fare ($)', fontsize=12) axes[0].set_ylabel('Frequency', fontsize=12) axes[0].set_title('Original Fare Distribution', fontsize=14, fontweight='bold') axes[0].grid(True, alpha=0.3) # Log-transformed fare axes[1].hist(fare_log, bins=50, color='lightcoral', edgecolor='black', alpha=0.7) axes[1].set_xlabel('Log(Fare + 1)', fontsize=12) axes[1].set_ylabel('Frequency', fontsize=12) axes[1].set_title('Log-Transformed Fare Distribution', fontsize=14, fontweight='bold') axes[1].grid(True, alpha=0.3) plt.tight_layout()
copy
Note
Визначення

Виділення ознак — це процес створення нових ознак із сирих даних для підвищення ефективності моделей машинного навчання.

Це допомагає зробити важливу інформацію більш явною, зменшити шум і іноді знизити розмірність даних. Ефективне виділення ознак може призвести до кращих прогнозів і більш інтерпретованих моделей.

1234567891011
import seaborn as sns import pandas as pd # Load the Titanic dataset df = sns.load_dataset('titanic') # Create a new feature: family_size = sibsp + parch + 1 df['family_size'] = df['sibsp'] + df['parch'] + 1 # Show the first few rows with the new feature print(df[['sibsp', 'parch', 'family_size']].head())
copy
question mark

Яке перетворення буде найбільш доречним для змінної з сильною позитивною асиметрією та лише додатними значеннями?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 3
some-alt