Перетворення та Виділення Ознак
Багато реальних наборів даних містять ознаки з асиметричними розподілами, що може знижувати ефективність моделей машинного навчання. Для зменшення асиметрії та підвищення якості даних можна застосовувати математичні перетворення. Два поширені методи:
- Логарифмічне перетворення: зменшує сильну позитивну асиметрію за допомогою
log(x); - Кореневе перетворення: пом'якшує менші ступені асиметрії за допомогою
sqrt(x).
Ці методи допомагають зробити розподіли ознак більш схожими на нормальний розподіл і підвищують продуктивність моделей.
123456789101112131415161718192021222324252627282930import 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()
Виділення ознак — це процес створення нових ознак із сирих даних для підвищення ефективності моделей машинного навчання.
Це допомагає зробити важливу інформацію більш явною, зменшити шум і іноді знизити розмірність даних. Ефективне виділення ознак може призвести до кращих прогнозів і більш інтерпретованих моделей.
1234567891011import 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())
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 8.33
Перетворення та Виділення Ознак
Свайпніть щоб показати меню
Багато реальних наборів даних містять ознаки з асиметричними розподілами, що може знижувати ефективність моделей машинного навчання. Для зменшення асиметрії та підвищення якості даних можна застосовувати математичні перетворення. Два поширені методи:
- Логарифмічне перетворення: зменшує сильну позитивну асиметрію за допомогою
log(x); - Кореневе перетворення: пом'якшує менші ступені асиметрії за допомогою
sqrt(x).
Ці методи допомагають зробити розподіли ознак більш схожими на нормальний розподіл і підвищують продуктивність моделей.
123456789101112131415161718192021222324252627282930import 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()
Виділення ознак — це процес створення нових ознак із сирих даних для підвищення ефективності моделей машинного навчання.
Це допомагає зробити важливу інформацію більш явною, зменшити шум і іноді знизити розмірність даних. Ефективне виділення ознак може призвести до кращих прогнозів і більш інтерпретованих моделей.
1234567891011import 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())
Дякуємо за ваш відгук!