Piirteiden Muuntaminen ja Poiminta
Monissa todellisissa tietoaineistoissa ominaisuuksien jakaumat ovat vinoutuneita, mikä voi heikentää koneoppimismallien tehokkuutta. Vinouman vähentämiseksi ja datan laadun parantamiseksi voidaan käyttää matemaattisia muunnoksia. Kaksi yleistä menetelmää ovat:
- Logaritminen muunnos: vähentää voimakasta positiivista vinoumaa käyttämällä
log(x); - Neliöjuurimuunnos: tasoittaa lievempiä vinoumia käyttämällä
sqrt(x).
Nämä menetelmät auttavat tekemään ominaisuuksien jakaumista normaalimman kaltaisia ja parantavat mallin suorituskykyä.
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()
Ominaisuuksien uutto tarkoittaa uusien ominaisuuksien luomista raakadatan pohjalta koneoppimismallien suorituskyvyn parantamiseksi.
Se auttaa tekemällä tärkeästä informaatiosta selkeämpää, vähentämällä kohinaa ja joskus pienentämällä datan ulottuvuutta. Tehokas piirteiden poiminta voi johtaa parempiin ennusteisiin ja helpommin tulkittaviin malleihin.
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())
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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
Piirteiden Muuntaminen ja Poiminta
Pyyhkäise näyttääksesi valikon
Monissa todellisissa tietoaineistoissa ominaisuuksien jakaumat ovat vinoutuneita, mikä voi heikentää koneoppimismallien tehokkuutta. Vinouman vähentämiseksi ja datan laadun parantamiseksi voidaan käyttää matemaattisia muunnoksia. Kaksi yleistä menetelmää ovat:
- Logaritminen muunnos: vähentää voimakasta positiivista vinoumaa käyttämällä
log(x); - Neliöjuurimuunnos: tasoittaa lievempiä vinoumia käyttämällä
sqrt(x).
Nämä menetelmät auttavat tekemään ominaisuuksien jakaumista normaalimman kaltaisia ja parantavat mallin suorituskykyä.
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()
Ominaisuuksien uutto tarkoittaa uusien ominaisuuksien luomista raakadatan pohjalta koneoppimismallien suorituskyvyn parantamiseksi.
Se auttaa tekemällä tärkeästä informaatiosta selkeämpää, vähentämällä kohinaa ja joskus pienentämällä datan ulottuvuutta. Tehokas piirteiden poiminta voi johtaa parempiin ennusteisiin ja helpommin tulkittaviin malleihin.
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())
Kiitos palautteestasi!