Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Piirteiden Muuntaminen ja Poiminta | Datan Muunnostekniikat
Datan Esikäsittely ja Ominaisuuksien Rakentaminen

bookPiirteiden 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ä.

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
Määritelmä

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.

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

Mikä muunnos olisi sopivin muuttujalle, jolla on voimakas positiivinen vinouma ja vain positiivisia arvoja?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 3

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

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

bookPiirteiden 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ä.

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
Määritelmä

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.

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

Mikä muunnos olisi sopivin muuttujalle, jolla on voimakas positiivinen vinouma ja vain positiivisia arvoja?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 3
some-alt