РСзюмС части 1

Π’ Π§Π°ΡΡ‚ΡŒ 1 ΠΌΡ‹:

  • ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π» ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Kaggle
  • Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π» Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Pandas
  • ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π» Π²Ρ‹ΡΠΎΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ статистику нашСго Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ Π½Π° дисбаланс классов
  • Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΠ» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Keyword

План для части 2

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ:

  • ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Location
  • Π‘ΠΈΠΌΠ²ΠΎΠ» Ρ‚Π²ΠΈΡ‚Π° ΠΈ Π΄Π»ΠΈΠ½Π° Ρ‚ΠΎΠΊΠ΅Π½Π°
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ U-ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Манна-Π£ΠΈΡ‚Π½ΠΈ для Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ²

Π§Π°ΡΡ‚ΡŒ 1: ИсслСдованиС Π΄Π°Π½Π½Ρ‹Ρ…

Π§Π°ΡΡ‚ΡŒ 2: Начало Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π²Ρ‹Π±ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ β€” Π²Ρ‹ здСсь!

ИсслСдованиС Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ рассмотрим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Location ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сдСлали Ρ€Π°Π½Π΅Π΅ для Keyword.

# Value counts
train_df['location'].value_counts(dropna=False)

Π”Π°, Ρƒ нас ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. На самом Π΄Π΅Π»Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ мСстополоТСнии отсутствуСт. Другая очСвидная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄Π°ΠΆΠ΅ для этой нСбольшой Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π° мСстополоТСний Π½Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹.

  • Π‘ΠΈΠ΄Π½Π΅ΠΉ, Австралия
  • Австралия
  • БША
  • Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Π΅ Π¨Ρ‚Π°Ρ‚Ρ‹
  • Индиана
  • ЀрСдСриксбург, ВирдТиния

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ создадим ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ гистограмму Π½Π°Π·Π²Π°Π½ΠΈΠΉ мСстополоТСний ΠΈ подсчСтов, ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ Ρ€Π°Π½Π΅Π΅ для Keyword.

# Create new dataframe with our count data
train_location_bar_df = train_df['location'].value_counts().reset_index()
train_location_bar_df.columns = ['location', 'count']
# Bar chart
fig = px.bar(train_location_bar_df, 
                x = "location",
                y = "count",
                height = 1000
)
fig.update_layout(xaxis_type='category',
                  title_text='Location')
fig.show()

Π•Ρ‰Π΅ нСсколько интСрСсных мСст, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ я столкнулся:

  • ?????
  • ΠœΠ΅Ρ‚Π²ΠΈΠ»Π», БША
  • ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² Ρ„ΡƒΡ‚Π±ΠΎΠ» ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΠΈΡ†Ρ†Ρƒ
  • Π― Π³Ρ€Π°ΠΆΠ΄Π°Π½ΠΈΠ½ ΠΌΠΈΡ€Π°
  • я люблю смурфиков 2

Π”Π°Π½Π½Ρ‹Π΅ ΠΎ мСстополоТСнии, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, вводятся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚Π²ΠΈΡ‚Ρ‚Π΅Ρ€Π°, вСроятно, ΠΏΡ€ΠΈ создании своСго профиля, Π° Π½Π΅ Π½Π° основС Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ Π±Ρ‹Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρ‚Π²ΠΈΡ‚ Π±Ρ‹Π» ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½.

Π”Π°Π²Π°ΠΉΡ‚Π΅ быстро суммируСм ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

  • Названия мСстополоТСний ΠΎΡ‡Π΅Π½ΡŒ ΠΈΠ·ΠΌΠ΅Π½Ρ‡ΠΈΠ²Ρ‹ ΠΈ нСстандартны.
  • ΠœΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ вводится ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈ, вСроятно, Π½Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ фактичСскоС мСстополоТСниС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находился ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Ρ‚Π²ΠΈΡ‚Π°.
  • ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ Ρ‚Ρ€Π΅Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ мСстополоТСнии

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Как ΠΈ Π² случаС с ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, для Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… очистки, сущСствуСт нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²:

  • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ столбСц ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, отмСчая, сущСствуСт Π»ΠΈ мСстополоТСниС ΠΈΠ»ΠΈ Π½Π΅Ρ‚
  • ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ Π² ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ ΠΈ Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ, которая Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ исходныС Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ.
  • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ модСль ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ/ΠΈΠ»ΠΈ очистки мСстополоТСния, которая попытаСтся ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ мСстополоТСния ΠΎΡ‚ ΠΏΠΎΠ΄Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ….
  • ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ опрСдСлСния мСстополоТСния

Из-Π·Π° отсутствия большого количСства Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΡ‹ ΠΏΠΎΠΊΠ° откаТСмся ΠΎΡ‚ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ½Π½ΠΈΠ½Π³. НСкоторыС ΠΈΠ΄Π΅ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя:

  • РаздСляйтС Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ мСстополоТСния (нСзависимо ΠΎΡ‚ фактичСского мСстополоТСния), ΠΏΠΎΠ΄Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ мСстополоТСния ΠΈ Π΅Ρ€ΡƒΠ½Π΄Ρƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ значСния.
  • РаздСляйтС ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ написанныС названия мСстополоТСний Π² рСгистрС.

Π”Π»ΠΈΠ½Ρ‹ символов ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² Ρ‚Π²ΠΈΡ‚ΠΎΠ²

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· нашСго тСкста, считая Π΄Π»ΠΈΠ½Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Π²ΠΈΡ‚Π° с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… символов ΠΈ количСства Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ².

Π”Π»ΠΈΠ½Π° символа

Π­Ρ‚ΠΎ простой подсчСт количСства символов Π² Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΌ тСкстС. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Β«ΠšΡ€Π°ΡΠ½Π°Ρ собака ΠΈ синяя собака Π²ΠΎ Π΄Π²ΠΎΡ€Π΅Β». Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ количСство символов 41. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ Π·Π½Π°ΠΊΠΈ прСпинания ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ символы.

Π”Π»ΠΈΠ½Π° Ρ‚ΠΎΠΊΠ΅Π½Π°

Π’ΠΎΠΊΠ΅Π½Ρ‹ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ слова. Π’ΠΎΡ‡Π½Π΅Π΅, Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ β€” это Π³Ρ€ΡƒΠΏΠΏΡ‹ символов, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ Π·Π½Π°ΠΊΠΎΠ² прСпинания с Π»ΡŽΠ±Ρ‹ΠΌΠΈ символами рядом с Π½ΠΈΠΌΠΈ. (О ΠΏΡƒΠ½ΠΊΡ‚ΡƒΠ°Ρ†ΠΈΠΈ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅.)

ΠœΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ эти счСтчики Π² качСствС столбцов Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² наш Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π΄Π°Π½Π½Ρ‹Ρ…:

train_df['char_len'] = train_df['text'].apply(lambda x: len(x))
train_df['token_len'] = train_df['text'].apply(lambda x: len([token for token in x.split()]))

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ Ρ‚Π²ΠΈΡ‚ΠΎΠ²

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ гистограмму всСх Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅ символов. ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ всплСск Π΄Π»ΠΈΠ½Ρ‹ Ρ‡ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅ ΠΏΡ€Π΅Π΄Π΅Π»Π° Π² 140 символов.

# Hist chart
fig = px.histogram(train_df,
                   x='char_len'
                  )
fig.update_layout(
    title_text='Tweet Character Lengths'
)
fig.show()

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ посмотрим Π½Π° распрСдСлСниС Π΄Π»ΠΈΠ½Ρ‹ Ρ‚ΠΎΠΊΠ΅Π½Π° для всСх Π½Π°ΡˆΠΈΡ… Ρ‚Π²ΠΈΡ‚ΠΎΠ².

# Hist chart
fig = px.histogram(train_df,
                   x='token_len'
                  )
fig.update_layout(
    title_text='Tweet Token Lengths'
)
fig.show()

РаспрСдСлСниС ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΌΠ΅Π½Π΅Π΅ искаТСно, Ρ‡Π΅ΠΌ наш ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ взгляд Π½Π° Π΄Π»ΠΈΠ½Ρƒ символов.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½ ΠΏΠΎ классам

Π§Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ интСрСсно, Ρ‚Π°ΠΊ это Ρ‚ΠΎ, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π»ΠΈ наши Π΄Π²Π° Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… класса различия Π² Π΄Π»ΠΈΠ½Π΅ Ρ‚Π²ΠΈΡ‚Π°. Если Π΄Π°, Ρ‚ΠΎ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ приступим ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ facet_row, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π΄Π²Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ° рядом Π½Π° ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ осях для облСгчСния сравнСния:

fig = px.histogram(train_df, x="token_len", color="target", facet_row="target")
fig.show()

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ класс 0 ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ хвосты ΠΈ большСС количСство счСтчиков, Ρ‡Π΅ΠΌ класс 1. ПослСднСС ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² классС 0 просто большС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Ρ‡Π΅ΠΌ Π² 1.

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ для Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сравнСния Π΄Π»ΠΈΠ½Ρ‹ символов.

fig = px.histogram(train_df, x="char_len", color="target", facet_row="target")
fig.show()

Класс 0 ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ хвосты, Π½ΠΎ ΠΏΠΈΠΊΠΎΠ²Ρ‹ΠΉ всплСск Π΄Π»ΠΈΠ½Ρ‹ символа Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ всплСск для класса 1.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ срСдств

ΠžΡ‡Π΅Π½ΡŒ простой ΠΈ быстрый способ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ срСдниС значСния ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌΠΈ классами β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ groupby Π² нашСм Ρ„Ρ€Π΅ΠΉΠΌΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…:

# Compare character length by class
train_df.groupby(by='target')['char_len'].mean()

# Compare token length by class
train_df.groupby(by='target')['token_len'].mean()

Π‘Π°ΠΌΠΈ ΠΏΠΎ сСбС Ρ†ΠΈΡ„Ρ€Ρ‹ Π½Π΅ говорят Π½Π°ΠΌ, сущСствСнны Π»ΠΈ различия Π² срСдствах. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ тСст Манна-Π£ΠΈΡ‚Π½ΠΈ U, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ это.

U-тСст Манна-Π£ΠΈΡ‚Π½ΠΈ

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ посмотрСли Π½Π° наши распрСдСлСния Π΄Π»ΠΈΠ½Ρ‹ Ρ‚Π²ΠΈΡ‚ΠΎΠ², ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ Π±Ρ‹Π»ΠΎ Π΄Π°ΠΆΠ΅ ΠΎΡ‚Π΄Π°Π»Π΅Π½Π½ΠΎ Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для использования стандартного t-критСрия. ВмСсто этого ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ двусторонний U-ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Манна-Π£ΠΈΡ‚Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ устойчив ΠΊ Π½Π΅Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ распрСдСлСниям (Ρ‚Π°ΠΊΠΆΠ΅ часто Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ нСпарамСтричСским тСстом), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ Π±ΠΈΠ½Π°Ρ€Π½ΡƒΡŽ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ (Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ классы).

# Mann Whitney U test
from scipy.stats import mannwhitneyu

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для хранСния Π½Π°ΡˆΠΈΡ… Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠ²:

# Token length data split by target class
token_len_00 = train_df.loc[train_df['target'] == 0, 'token_len']
token_len_01 = train_df.loc[train_df['target'] == 1, 'token_len']
# Character length data split by target class
char_len_00 = train_df.loc[train_df['target'] == 0, 'char_len']
char_len_01 = train_df.loc[train_df['target'] == 1, 'char_len']

Когда ΠΌΡ‹ запускаСм тСст, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ p-значСния для одностороннСго тСста. P-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” это статистичСская ΠΌΠ΅Ρ€Π°, говорящая Π½Π°ΠΌ, насколько вСроятно, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ случайно ΡƒΠ²ΠΈΠ΄ΠΈΠΌ различия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π² Π½Π°ΡˆΠΈΡ… Π΄Π²ΡƒΡ… Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°Ρ…. ВысокоС p-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ распрСдСлСния благодаря случайности, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π½ΠΈΠ·ΠΊΠΎΠ΅ p-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ «статистичСская Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒΒ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° возвращаСтся p-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π½Π΅Π΅ 0,05 (5%), Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΡ‹Π΅ распрСдСлСния ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ случайно, Π° Π½Π΅ ΠΈΠ·-Π·Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹.

ΠœΡ‹ ΡƒΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ одностороннСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ p Π½Π° Π΄Π²Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ двустороннСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Двусторонний тСст рассматриваСт различия ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΎΠ±Ρ€Π°Π·Ρ†Π°ΠΌΠΈ Π² любом Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ (Π²Ρ‹ΡˆΠ΅ ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ΅), Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ односторонний тСст смотрит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ двусторонний тСст, ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ p ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅ΠΌ стандарт, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ «статистичСски Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΌΒ».

# Token length results
print(mannwhitneyu(token_len_00, token_len_01))
print(f"Two-sided result: {mannwhitneyu(token_len_00, token_len_01)[1] * 2}")

ΠœΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΡ‡Π΅Π½ΡŒ Π½ΠΈΠ·ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ p для ΠΎΠ±Ρ‰Π΅ΠΉ Π΄Π»ΠΈΠ½Ρ‹ Ρ‚ΠΎΠΊΠ΅Π½Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сохраним количСство Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для нашСй ΠΌΠΎΠ΄Π΅Π»ΠΈ.

print(mannwhitneyu(char_len_00, char_len_01))
print(f"Two-sided result: {mannwhitneyu(char_len_00, char_len_01)[1] * 2}")

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄ΠΈΠΌ ΠΎΡ‡Π΅Π½ΡŒ малСнькоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ p для Π΄Π»ΠΈΠ½Ρ‹ символа с Ρ‚Π΅ΠΌ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² нашСй ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги

Π’ части 3 ΠΌΡ‹ рассмотрим Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΠ΄Π΅ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ использованиС Π·Π°Π³Π»Π°Π²Π½Ρ‹Ρ… Π±ΡƒΠΊΠ² Π² тСкстС, использованиС смайликов ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅!

БСйчас самоС врСмя ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎΡΡ Ρƒ нас тСкста, Π° Ρ‚Π°ΠΊΠΆΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ способ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚Π΅Π³ΠΈ Location.