Diamonds - Preprocessing
1. Créez une variable volume
1. Créez une variable volume
2. Créez une variable qui donne le rapport carat / volume (densité apparente)
3. Determinez la corrélation entre ces nouvelles variables et le prix. Ces nouvelles associations sont-elles intéressantes ?
4. La variable Depth est elle-meme construite sur la base des variables x, y, et z. Saurez-vous trouver laquelle ?
5. Avez-vous d'autres idées de Feature Engineering?
Utilisez polynomial features pour tester des combinaisons de degré 2 et dites s'il existe des variables intéressantes.
1. Créez une variable volume
2. Créez une variable qui donne le rapport carat / volume (densité apparente)
3. Determinez la corrélation entre ces nouvelles variables et le prix. Ces nouvelles associations sont-elles intéressantes ?
4. La variable Depth est elle-meme construite sur la base des variables x, y, et z. Saurez-vous trouver laquelle ?
5. Avez-vous d'autres idées de Feature Engineering?
Utilisez polynomial features pour tester des combinaisons de degré 2 et dites s'il existe des variables intéressantes.
1. Créez une variable volume
Analyse du dataset
df = sns.load_dataset('diamonds')
df.head()
carat cut color clarity depth table price x y z 0 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43 1 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31 2 0.23 Good E VS1 56.9 65.0 327 4.05 4.07 2.31 3 0.29 Premium I VS2 62.4 58.0 334 4.20 4.23 2.63 4 0.31 Good J SI2 63.3 58.0 335 4.34 4.35 2.75
1. Créez une variable volume
Colonne volume = x * y * z
df = sns.load_dataset('diamonds')
df['volume'] = df['x'] * df['y'] * df['z']
df.head()
carat cut color clarity depth ... price x y z volume 0 0.23 Ideal E SI2 61.5 ... 326 3.95 3.98 2.43 38.202030 1 0.21 Premium E SI1 59.8 ... 326 3.89 3.84 2.31 34.505856 2 0.23 Good E VS1 56.9 ... 327 4.05 4.07 2.31 38.076885 3 0.29 Premium I VS2 62.4 ... 334 4.20 4.23 2.63 46.724580 4 0.31 Good J SI2 63.3 ... 335 4.34 4.35 2.75 51.917250 [5 rows x 11 columns]
2. Créez une variable qui donne le rapport carat / volume (densité apparente)
Colonne density = carat / volume
df['volumne'] = df['x'] * df['y'] * df['z']
df['density'] = df['carat'] / df['volume']
df.head()
carat cut color clarity depth ... x y z volume density 0 0.23 Ideal E SI2 61.5 ... 3.95 3.98 2.43 38.202030 0.006021 1 0.21 Premium E SI1 59.8 ... 3.89 3.84 2.31 34.505856 0.006086 2 0.23 Good E VS1 56.9 ... 4.05 4.07 2.31 38.076885 0.006040 3 0.29 Premium I VS2 62.4 ... 4.20 4.23 2.63 46.724580 0.006207 4 0.31 Good J SI2 63.3 ... 4.34 4.35 2.75 51.917250 0.005971 [5 rows x 12 columns]
3. Determinez la corrélation entre ces nouvelles variables et le prix. Ces nouvelles associations sont-elles intéressantes ?
Volume <-> Prix Hypothèse 0
Teste s'il existe une corrélation entre 2 variables continues
H0: Le prix d'un diamand n'est pas correlé au volume du diamand
alpha = 0.02
Teste s'il existe une corrélation entre 2 variables continues
H0: Le prix d'un diamand n'est pas correlé au volume du diamand
alpha = 0.02
Enquête de terrain
sns.scatterplot(data=df, x='volume', y='price')
Enquête de terrain
sns.scatterplot(data=df.query("volume <= 600"), x='volume', y='price')
Test Pearson
pearsonr(df['volume'], df['price'])
PearsonRResult(statistic=np.float64(0.9023845363055314), pvalue=np.float64(0.0))
Conclusion
alpha = 0.02
p_value = pearsonr(df['volume'], df['price']).pvalue
if p_value < alpha:
print('Nous avons suffisament d’évidences pour rejeter H0')
else:
print('Nous n’avons pas suffisament d’évidences pour rejeter H0')
p_value = 0.0
p_value < alpha
Nous avons suffisament d’évidences pour rejeter H0
Densité <-> Prix Hypothèse 0
Teste s'il existe une corrélation entre 2 variables continues
H0: Le prix d'un diamand n'est pas correlé à la densité apperente du diamand
alpha = 0.02
Teste s'il existe une corrélation entre 2 variables continues
H0: Le prix d'un diamand n'est pas correlé à la densité apperente du diamand
alpha = 0.02
Enquête de terrain
sns.scatterplot(data=df, x='density', y='price')
Enquête de terrain
sns.scatterplot(data=df, x='density', y='price')
Test Pearson
pearsonr(df['density'], df['price'])
PearsonRResult(statistic=np.float64(nan), pvalue=np.float64(nan))
Conclusion
alpha = 0.02
p_value = pearsonr(df['density'], df['price']).pvalue
if p_value < alpha:
print('Nous avons suffisament d’évidences pour rejeter H0')
else:
print('Nous n’avons pas suffisament d’évidences pour rejeter H0')
p_value = nan
p_value ≥ alpha ⇒
Nous n’avons pas suffisament d’évidences pour rejeter H0