فراخوانی کتابخانه ها و
آماده سازی
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(readr)
بارگزاری دیتا فریم
emot <- read_csv("E:\\Acoustic features.csv")
## Rows: 400 Columns: 51
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (1): Class
## dbl (50): _RMSenergy_Mean, _Lowenergy_Mean, _Fluctuation_Mean, _Tempo_Mean, ...
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
اطلاعات نوع داده
class(emot)
## [1] "spec_tbl_df" "tbl_df" "tbl" "data.frame"
خلاصه داده
glimpse(emot)
## Rows: 400
## Columns: 51
## $ Class <chr> "relax", "relax", "re~
## $ `_RMSenergy_Mean` <dbl> 0.052, 0.125, 0.046, ~
## $ `_Lowenergy_Mean` <dbl> 0.591, 0.439, 0.639, ~
## $ `_Fluctuation_Mean` <dbl> 9.136, 6.680, 10.578,~
## $ `_Tempo_Mean` <dbl> 130.043, 142.240, 188~
## $ `_MFCC_Mean_1` <dbl> 3.997, 4.058, 2.775, ~
## $ `_MFCC_Mean_2` <dbl> 0.363, 0.516, 0.903, ~
## $ `_MFCC_Mean_3` <dbl> 0.887, 0.785, 0.502, ~
## $ `_MFCC_Mean_4` <dbl> 0.078, 0.397, 0.329, ~
## $ `_MFCC_Mean_5` <dbl> 0.221, 0.556, 0.287, ~
## $ `_MFCC_Mean_6` <dbl> 0.118, 0.799, 0.140, ~
## $ `_MFCC_Mean_7` <dbl> -0.151, -0.403, -0.24~
## $ `_MFCC_Mean_8` <dbl> -0.131, -0.264, 0.025~
## $ `_MFCC_Mean_9` <dbl> 0.129, -0.057, -0.112~
## $ `_MFCC_Mean_10` <dbl> 0.154, 0.288, -0.422,~
## $ `_MFCC_Mean_11` <dbl> 0.274, 0.309, 0.018, ~
## $ `_MFCC_Mean_12` <dbl> 0.232, 0.049, 0.179, ~
## $ `_MFCC_Mean_13` <dbl> 0.246, 0.027, 0.138, ~
## $ `_Roughness_Mean` <dbl> 51.542, 336.839, 39.8~
## $ `_Roughness_Slope` <dbl> 0.325, 0.366, 0.224, ~
## $ `_Zero-crossingrate_Mean` <dbl> 403.129, 204.886, 685~
## $ `_AttackTime_Mean` <dbl> 0.028, 0.015, 0.033, ~
## $ `_AttackTime_Slope` <dbl> -0.014, -0.079, -0.27~
## $ `_Rolloff_Mean` <dbl> 1844.664, 1181.067, 1~
## $ `_Eventdensity_Mean` <dbl> 1.336, 1.336, 1.336, ~
## $ `_Pulseclarity_Mean` <dbl> 0.082, 0.051, 0.299, ~
## $ `_Brightness_Mean` <dbl> 0.173, 0.117, 0.496, ~
## $ `_Spectralcentroid_Mean` <dbl> 1121.368, 896.047, 41~
## $ `_Spectralspread_Mean` <dbl> 1970.389, 1959.622, 4~
## $ `_Spectralskewness_Mean` <dbl> 3.621, 4.134, 0.902, ~
## $ `_Spectralkurtosis_Mean` <dbl> 18.037, 21.990, 2.366~
## $ `_Spectralflatness_Mean` <dbl> 0.030, 0.025, 0.091, ~
## $ `_EntropyofSpectrum_Mean` <dbl> 0.806, 0.765, 0.897, ~
## $ `_Chromagram_Mean_1` <dbl> 0.496, 0.000, 0.412, ~
## $ `_Chromagram_Mean_2` <dbl> 0.000, 0.142, 0.245, ~
## $ `_Chromagram_Mean_3` <dbl> 0.047, 0.137, 0.526, ~
## $ `_Chromagram_Mean_4` <dbl> 0.030, 0.076, 0.095, ~
## $ `_Chromagram_Mean_5` <dbl> 0.314, 0.112, 0.519, ~
## $ `_Chromagram_Mean_6` <dbl> 0.038, 0.000, 0.001, ~
## $ `_Chromagram_Mean_7` <dbl> 0.024, 0.120, 0.563, ~
## $ `_Chromagram_Mean_8` <dbl> 0.951, 0.000, 0.282, ~
## $ `_Chromagram_Mean_9` <dbl> 0.426, 0.002, 0.184, ~
## $ `_Chromagram_Mean_10` <dbl> 1.000, 1.000, 0.746, ~
## $ `_Chromagram_Mean_11` <dbl> 0.008, 0.000, 0.016, ~
## $ `_Chromagram_Mean_12` <dbl> 0.101, 0.984, 1.000, ~
## $ `_HarmonicChangeDetectionFunction_Mean` <dbl> 0.316, 0.285, 0.413, ~
## $ `_HarmonicChangeDetectionFunction_Std` <dbl> 0.261, 0.211, 0.299, ~
## $ `_HarmonicChangeDetectionFunction_Slope` <dbl> 0.018, -0.082, 0.134,~
## $ `_HarmonicChangeDetectionFunction_PeriodFreq` <dbl> 1.035, 3.364, 1.682, ~
## $ `_HarmonicChangeDetectionFunction_PeriodAmp` <dbl> 0.593, 0.702, 0.692, ~
## $ `_HarmonicChangeDetectionFunction_PeriodEntropy` <dbl> 0.970, 0.967, 0.963, ~
تعداد var
و obs
nrow(emot)
## [1] 400
ncol(emot)
## [1] 51
تبدیل متغیر کیفی
emot <- emot |>
mutate(
Class = as.factor(Class)
)
glimpse(emot)
## Rows: 400
## Columns: 51
## $ Class <fct> relax, relax, relax, ~
## $ `_RMSenergy_Mean` <dbl> 0.052, 0.125, 0.046, ~
## $ `_Lowenergy_Mean` <dbl> 0.591, 0.439, 0.639, ~
## $ `_Fluctuation_Mean` <dbl> 9.136, 6.680, 10.578,~
## $ `_Tempo_Mean` <dbl> 130.043, 142.240, 188~
## $ `_MFCC_Mean_1` <dbl> 3.997, 4.058, 2.775, ~
## $ `_MFCC_Mean_2` <dbl> 0.363, 0.516, 0.903, ~
## $ `_MFCC_Mean_3` <dbl> 0.887, 0.785, 0.502, ~
## $ `_MFCC_Mean_4` <dbl> 0.078, 0.397, 0.329, ~
## $ `_MFCC_Mean_5` <dbl> 0.221, 0.556, 0.287, ~
## $ `_MFCC_Mean_6` <dbl> 0.118, 0.799, 0.140, ~
## $ `_MFCC_Mean_7` <dbl> -0.151, -0.403, -0.24~
## $ `_MFCC_Mean_8` <dbl> -0.131, -0.264, 0.025~
## $ `_MFCC_Mean_9` <dbl> 0.129, -0.057, -0.112~
## $ `_MFCC_Mean_10` <dbl> 0.154, 0.288, -0.422,~
## $ `_MFCC_Mean_11` <dbl> 0.274, 0.309, 0.018, ~
## $ `_MFCC_Mean_12` <dbl> 0.232, 0.049, 0.179, ~
## $ `_MFCC_Mean_13` <dbl> 0.246, 0.027, 0.138, ~
## $ `_Roughness_Mean` <dbl> 51.542, 336.839, 39.8~
## $ `_Roughness_Slope` <dbl> 0.325, 0.366, 0.224, ~
## $ `_Zero-crossingrate_Mean` <dbl> 403.129, 204.886, 685~
## $ `_AttackTime_Mean` <dbl> 0.028, 0.015, 0.033, ~
## $ `_AttackTime_Slope` <dbl> -0.014, -0.079, -0.27~
## $ `_Rolloff_Mean` <dbl> 1844.664, 1181.067, 1~
## $ `_Eventdensity_Mean` <dbl> 1.336, 1.336, 1.336, ~
## $ `_Pulseclarity_Mean` <dbl> 0.082, 0.051, 0.299, ~
## $ `_Brightness_Mean` <dbl> 0.173, 0.117, 0.496, ~
## $ `_Spectralcentroid_Mean` <dbl> 1121.368, 896.047, 41~
## $ `_Spectralspread_Mean` <dbl> 1970.389, 1959.622, 4~
## $ `_Spectralskewness_Mean` <dbl> 3.621, 4.134, 0.902, ~
## $ `_Spectralkurtosis_Mean` <dbl> 18.037, 21.990, 2.366~
## $ `_Spectralflatness_Mean` <dbl> 0.030, 0.025, 0.091, ~
## $ `_EntropyofSpectrum_Mean` <dbl> 0.806, 0.765, 0.897, ~
## $ `_Chromagram_Mean_1` <dbl> 0.496, 0.000, 0.412, ~
## $ `_Chromagram_Mean_2` <dbl> 0.000, 0.142, 0.245, ~
## $ `_Chromagram_Mean_3` <dbl> 0.047, 0.137, 0.526, ~
## $ `_Chromagram_Mean_4` <dbl> 0.030, 0.076, 0.095, ~
## $ `_Chromagram_Mean_5` <dbl> 0.314, 0.112, 0.519, ~
## $ `_Chromagram_Mean_6` <dbl> 0.038, 0.000, 0.001, ~
## $ `_Chromagram_Mean_7` <dbl> 0.024, 0.120, 0.563, ~
## $ `_Chromagram_Mean_8` <dbl> 0.951, 0.000, 0.282, ~
## $ `_Chromagram_Mean_9` <dbl> 0.426, 0.002, 0.184, ~
## $ `_Chromagram_Mean_10` <dbl> 1.000, 1.000, 0.746, ~
## $ `_Chromagram_Mean_11` <dbl> 0.008, 0.000, 0.016, ~
## $ `_Chromagram_Mean_12` <dbl> 0.101, 0.984, 1.000, ~
## $ `_HarmonicChangeDetectionFunction_Mean` <dbl> 0.316, 0.285, 0.413, ~
## $ `_HarmonicChangeDetectionFunction_Std` <dbl> 0.261, 0.211, 0.299, ~
## $ `_HarmonicChangeDetectionFunction_Slope` <dbl> 0.018, -0.082, 0.134,~
## $ `_HarmonicChangeDetectionFunction_PeriodFreq` <dbl> 1.035, 3.364, 1.682, ~
## $ `_HarmonicChangeDetectionFunction_PeriodAmp` <dbl> 0.593, 0.702, 0.692, ~
## $ `_HarmonicChangeDetectionFunction_PeriodEntropy` <dbl> 0.970, 0.967, 0.963, ~
مشاهده
variable ها
names(emot)
## [1] "Class"
## [2] "_RMSenergy_Mean"
## [3] "_Lowenergy_Mean"
## [4] "_Fluctuation_Mean"
## [5] "_Tempo_Mean"
## [6] "_MFCC_Mean_1"
## [7] "_MFCC_Mean_2"
## [8] "_MFCC_Mean_3"
## [9] "_MFCC_Mean_4"
## [10] "_MFCC_Mean_5"
## [11] "_MFCC_Mean_6"
## [12] "_MFCC_Mean_7"
## [13] "_MFCC_Mean_8"
## [14] "_MFCC_Mean_9"
## [15] "_MFCC_Mean_10"
## [16] "_MFCC_Mean_11"
## [17] "_MFCC_Mean_12"
## [18] "_MFCC_Mean_13"
## [19] "_Roughness_Mean"
## [20] "_Roughness_Slope"
## [21] "_Zero-crossingrate_Mean"
## [22] "_AttackTime_Mean"
## [23] "_AttackTime_Slope"
## [24] "_Rolloff_Mean"
## [25] "_Eventdensity_Mean"
## [26] "_Pulseclarity_Mean"
## [27] "_Brightness_Mean"
## [28] "_Spectralcentroid_Mean"
## [29] "_Spectralspread_Mean"
## [30] "_Spectralskewness_Mean"
## [31] "_Spectralkurtosis_Mean"
## [32] "_Spectralflatness_Mean"
## [33] "_EntropyofSpectrum_Mean"
## [34] "_Chromagram_Mean_1"
## [35] "_Chromagram_Mean_2"
## [36] "_Chromagram_Mean_3"
## [37] "_Chromagram_Mean_4"
## [38] "_Chromagram_Mean_5"
## [39] "_Chromagram_Mean_6"
## [40] "_Chromagram_Mean_7"
## [41] "_Chromagram_Mean_8"
## [42] "_Chromagram_Mean_9"
## [43] "_Chromagram_Mean_10"
## [44] "_Chromagram_Mean_11"
## [45] "_Chromagram_Mean_12"
## [46] "_HarmonicChangeDetectionFunction_Mean"
## [47] "_HarmonicChangeDetectionFunction_Std"
## [48] "_HarmonicChangeDetectionFunction_Slope"
## [49] "_HarmonicChangeDetectionFunction_PeriodFreq"
## [50] "_HarmonicChangeDetectionFunction_PeriodAmp"
## [51] "_HarmonicChangeDetectionFunction_PeriodEntropy"
کاربرد تابع
slice
مشاهده سه ردیف
اول
emot |>
slice(1:3)
## # A tibble: 3 x 51
## Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean` `_Tempo_Mean`
## <fct> <dbl> <dbl> <dbl> <dbl>
## 1 relax 0.052 0.591 9.14 130.
## 2 relax 0.125 0.439 6.68 142.
## 3 relax 0.046 0.639 10.6 188.
## # i 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## # `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## # `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## # `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## # `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## # `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>,
## # `_AttackTime_Mean` <dbl>, `_AttackTime_Slope` <dbl>, ...
مشاهده ردیف آخر
emot |>
slice(n())
## # A tibble: 1 x 51
## Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean` `_Tempo_Mean`
## <fct> <dbl> <dbl> <dbl> <dbl>
## 1 angry 0.086 0.475 5.34 152.
## # i 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## # `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## # `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## # `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## # `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## # `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>,
## # `_AttackTime_Mean` <dbl>, `_AttackTime_Slope` <dbl>, ...
نمونه گیری تصادفی هفت
ردیف
emot |>
slice_sample(n = 5)
## # A tibble: 5 x 51
## Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean` `_Tempo_Mean`
## <fct> <dbl> <dbl> <dbl> <dbl>
## 1 relax 0.236 0.549 6.71 106.
## 2 happy 0.161 0.589 7.19 167.
## 3 angry 0.144 0.643 5.96 158.
## 4 relax 0.074 0.556 6.45 122.
## 5 relax 0.055 0.676 6.99 144.
## # i 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## # `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## # `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## # `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## # `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## # `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>,
## # `_AttackTime_Mean` <dbl>, `_AttackTime_Slope` <dbl>, ...
مشاهده بیشترین مقدار
تمپو
emot |>
slice_max(`_Tempo_Mean`)
## # A tibble: 1 x 51
## Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean` `_Tempo_Mean`
## <fct> <dbl> <dbl> <dbl> <dbl>
## 1 angry 0.101 0.562 5.90 195.
## # i 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## # `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## # `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## # `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## # `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## # `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>,
## # `_AttackTime_Mean` <dbl>, `_AttackTime_Slope` <dbl>, ...
کاربرد تابع
select
بخش های مربوظ به
انرژی صوتی همراه متغیر هدف
emot |>
select(Class,`_RMSenergy_Mean`,`_Lowenergy_Mean`,`_Fluctuation_Mean`)
## # A tibble: 400 x 4
## Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean`
## <fct> <dbl> <dbl> <dbl>
## 1 relax 0.052 0.591 9.14
## 2 relax 0.125 0.439 6.68
## 3 relax 0.046 0.639 10.6
## 4 relax 0.135 0.603 10.4
## 5 relax 0.066 0.591 9.77
## 6 relax 0.137 0.51 7.66
## 7 relax 0.123 0.533 7.48
## 8 relax 0.103 0.575 7.01
## 9 relax 0.145 0.542 6.85
## 10 relax 0.129 0.618 8.67
## # i 390 more rows
بخش های مربوظ به
انرژی صوتی همراه متغیر هدف
emot |>
select(`_Tempo_Mean`,Class,everything())
## # A tibble: 400 x 51
## `_Tempo_Mean` Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean`
## <dbl> <fct> <dbl> <dbl> <dbl>
## 1 130. relax 0.052 0.591 9.14
## 2 142. relax 0.125 0.439 6.68
## 3 188. relax 0.046 0.639 10.6
## 4 66.0 relax 0.135 0.603 10.4
## 5 88.9 relax 0.066 0.591 9.77
## 6 116. relax 0.137 0.51 7.66
## 7 136. relax 0.123 0.533 7.48
## 8 141. relax 0.103 0.575 7.01
## 9 82.0 relax 0.145 0.542 6.85
## 10 93.0 relax 0.129 0.618 8.67
## # i 390 more rows
## # i 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## # `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## # `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## # `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## # `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## # `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>, ...
مشاهده متغیر هایی که
با کلمه R شروع میشوند
emot |>
select(starts_with("_R"))
## # A tibble: 400 x 4
## `_RMSenergy_Mean` `_Roughness_Mean` `_Roughness_Slope` `_Rolloff_Mean`
## <dbl> <dbl> <dbl> <dbl>
## 1 0.052 51.5 0.325 1845.
## 2 0.125 337. 0.366 1181.
## 3 0.046 39.9 0.224 10779.
## 4 0.135 354. 0.215 6746.
## 5 0.066 46.9 -0.118 3328.
## 6 0.137 249. 0.04 5093.
## 7 0.123 336. 0.272 887.
## 8 0.103 293. 0.345 8090.
## 9 0.145 738. 0.38 1584.
## 10 0.129 215. 0.185 6397.
## # i 390 more rows
مشاهده متغیر هایی که
با sتمام میشوند
emot |>
select(ends_with("s"))
## # A tibble: 400 x 1
## Class
## <fct>
## 1 relax
## 2 relax
## 3 relax
## 4 relax
## 5 relax
## 6 relax
## 7 relax
## 8 relax
## 9 relax
## 10 relax
## # i 390 more rows
مشاهده متغیر هایی که
در آنها از حروف oug استفاده شده است
emot |>
select(contains("oug"))
## # A tibble: 400 x 2
## `_Roughness_Mean` `_Roughness_Slope`
## <dbl> <dbl>
## 1 51.5 0.325
## 2 337. 0.366
## 3 39.9 0.224
## 4 354. 0.215
## 5 46.9 -0.118
## 6 249. 0.04
## 7 336. 0.272
## 8 293. 0.345
## 9 738. 0.38
## 10 215. 0.185
## # i 390 more rows
کاربرد تابع
arrange
داده هارا بر اساس
میزان تمپو صعودی مرتب کنید
emot |>
arrange(`_Tempo_Mean`)
## # A tibble: 400 x 51
## Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean` `_Tempo_Mean`
## <fct> <dbl> <dbl> <dbl> <dbl>
## 1 sad 0.153 0.554 7.17 48.3
## 2 happy 0.11 0.449 16.2 52.0
## 3 relax 0.084 0.56 8.45 52.8
## 4 relax 0.15 0.567 7.83 52.9
## 5 sad 0.1 0.558 6.04 53.0
## 6 angry 0.151 0.562 5.73 54.5
## 7 angry 0.115 0.587 4.30 54.9
## 8 relax 0.167 0.63 8.21 55.0
## 9 relax 0.129 0.593 6.69 55.3
## 10 happy 0.143 0.505 6.93 58.1
## # i 390 more rows
## # i 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## # `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## # `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## # `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## # `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## # `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>, ...
داده ها را بر اساس
میزان تمپو نزولی مرتب کنید
emot |>
arrange(desc(`_Tempo_Mean`))
## # A tibble: 400 x 51
## Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean` `_Tempo_Mean`
## <fct> <dbl> <dbl> <dbl> <dbl>
## 1 angry 0.101 0.562 5.90 195.
## 2 sad 0.085 0.58 6.13 194.
## 3 happy 0.132 0.537 6.85 194.
## 4 happy 0.168 0.604 7.63 192.
## 5 happy 0.167 0.582 7.89 190.
## 6 happy 0.077 0.552 7.35 189.
## 7 happy 0.077 0.552 7.35 189.
## 8 relax 0.109 0.575 6.61 188.
## 9 relax 0.046 0.639 10.6 188.
## 10 happy 0.065 0.512 17.3 188.
## # i 390 more rows
## # i 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## # `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## # `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## # `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## # `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## # `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>, ...
کاربرد تابع
filter
آهنگ هایی که تمپو
بالای 150 دارند و تغییرات انرژی بالای 5
emot |>
filter(`_Tempo_Mean` > 150 , `_Fluctuation_Mean` > 5)
## # A tibble: 87 x 51
## Class `_RMSenergy_Mean` `_Lowenergy_Mean` `_Fluctuation_Mean` `_Tempo_Mean`
## <fct> <dbl> <dbl> <dbl> <dbl>
## 1 relax 0.046 0.639 10.6 188.
## 2 relax 0.068 0.659 8.58 182.
## 3 relax 0.14 0.522 7.12 158.
## 4 relax 0.068 0.613 6.29 176.
## 5 relax 0.127 0.508 9.59 179.
## 6 relax 0.1 0.548 5.39 165.
## 7 relax 0.123 0.515 6.56 168.
## 8 relax 0.083 0.543 6.06 179.
## 9 relax 0.109 0.575 6.61 188.
## 10 relax 0.093 0.543 10.1 182.
## # i 77 more rows
## # i 46 more variables: `_MFCC_Mean_1` <dbl>, `_MFCC_Mean_2` <dbl>,
## # `_MFCC_Mean_3` <dbl>, `_MFCC_Mean_4` <dbl>, `_MFCC_Mean_5` <dbl>,
## # `_MFCC_Mean_6` <dbl>, `_MFCC_Mean_7` <dbl>, `_MFCC_Mean_8` <dbl>,
## # `_MFCC_Mean_9` <dbl>, `_MFCC_Mean_10` <dbl>, `_MFCC_Mean_11` <dbl>,
## # `_MFCC_Mean_12` <dbl>, `_MFCC_Mean_13` <dbl>, `_Roughness_Mean` <dbl>,
## # `_Roughness_Slope` <dbl>, `_Zero-crossingrate_Mean` <dbl>, ...
تعداد آهنگ های
شاد
happy_emot <- emot |>
filter(Class == "happy")
nrow(happy_emot)
## [1] 100
چند درصد داده ها
مربوط به آهنگای شاد است
mean(emot$Class == "happy")*100
## [1] 25
تعداد آهنگ هایی که
غمگین یا خشن هستند
sad_angry_emot <- emot |>
filter(Class %in% c("sad","angry"))
nrow(sad_angry_emot)
## [1] 200
کاردبرد تابع
mutate و transmute
ستونی بسازید که
میزان خشونت صدا نسبت به انرژی کل را نشان دهد
emot <- emot |>
mutate(RbyR = `_Roughness_Mean` / `_RMSenergy_Mean`)
ستونی بسازید که زمان
حمله صدا را به سه دسته تقسیم کند
emot <- emot |>
mutate(Attack_time_type = case_when(
`_AttackTime_Mean` < 0.05 ~ "Short",
`_AttackTime_Mean` < 0.15 ~ "Medium",
TRUE ~ "Long"
))
ستون های جدید که
ساختید را به همراه متغیر هدف نمایش دهید
emot |>
select(Attack_time_type,RbyR,Class)
## # A tibble: 400 x 3
## Attack_time_type RbyR Class
## <chr> <dbl> <fct>
## 1 Short 991. relax
## 2 Short 2695. relax
## 3 Short 867. relax
## 4 Short 2620. relax
## 5 Short 710. relax
## 6 Short 1820. relax
## 7 Medium 2734. relax
## 8 Short 2848. relax
## 9 Short 5089. relax
## 10 Short 1667. relax
## # i 390 more rows
متغیر
tempo_metr را طوری بسازید که آهنگ ها را بر اساس میزان تمپو
به سه دسته Low , Medium و High
تقسیم بندی کند و آن را همرا با ستون متغیر هدف در دیتاستی جدید نمایش
دهد
emot |>
transmute(
Class,
tempo_metr = case_when(
`_Tempo_Mean` < 90 ~ "Low",
`_Tempo_Mean` < 130 ~ "Medium",
TRUE ~ "High"
)
)
## # A tibble: 400 x 2
## Class tempo_metr
## <fct> <chr>
## 1 relax High
## 2 relax High
## 3 relax High
## 4 relax Low
## 5 relax Low
## 6 relax Medium
## 7 relax High
## 8 relax High
## 9 relax Low
## 10 relax Medium
## # i 390 more rows
خلاصه سازی و استفاده
از توابع group_by و summarise
یک جدول خلاصه سازی
شده بسازید که برای هر class تعداد آهنگ ها و
tempo_Mean را نمایش دهد
Tempo_summary <- emot |>
group_by(Class) |>
summarise(
count_song = n(),
avg_tempo = mean(`_Tempo_Mean`, na.rm = TRUE)
) |>
ungroup()
دیدن جدول
Tempo_summary
## # A tibble: 4 x 3
## Class count_song avg_tempo
## <fct> <int> <dbl>
## 1 angry 100 129.
## 2 happy 100 124.
## 3 relax 100 113.
## 4 sad 100 128.
بخش مصور سازی
در این بخش با
استفاده از بسته های مختلف R داده های مربوط به مجموعه داده
موسیقی ترکی تحلیل و مصور سازی میشوند ابتدا کتابخانه های مورد نیاز
فراخوانی شده و سپس داده ها وارد محیط R میشوند در ادامه با
استفاده از نمودار های مناسب روابط بین متغیر ها توزیع داده ها و ویژگی های
مهم مجموعه داده بررسی خواهند شد
فراخوانی کتابخانه
های مورد نیاز
library(dplyr)
library(tidyr)
library(ggplot2)
library(ggthemes)
library(RColorBrewer)
library(viridis)
## Loading required package: viridisLite
library(scales)
##
## Attaching package: 'scales'
## The following object is masked from 'package:viridis':
##
## viridis_pal
## The following object is masked from 'package:readr':
##
## col_factor
library(ggridges)
library(DT)
library(GGally)
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(treemapify)
library(sn)
## Loading required package: stats4
##
## Attaching package: 'sn'
## The following object is masked from 'package:stats':
##
## sd
library(tmap)
library(patchwork)
library(ggcorrplot)
library(htmlwidgets)
مشخصات مجموعه
داده
این مجموعه داده شامل
ویژگی های آکوستیکی موسیقی های ترکی است.
متغیر پاسخ :
class
نوع متغیر :
categorical
نوع مسئله :
classification
الگوریتم های مناسب :
Decision Tree , Random Forest ,
Logistic Regression , Support Vector Machine ,
Naive Bayes , KNN
نمودار میله ای فراوانی
احساسات
در این نمودار تعداد
آهنگ های موجود در هر کلاس احساسی نمایش داده میشوند
ggplot(emot, aes(x = Class, fill = Class)) +
geom_bar() +
labs(
title = "Distribution of Emotion Classes",
x = "Emotion Class",
y = "Frequency"
) +
scale_fill_brewer(palette = "Set2") +
theme_minimal() +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
legend.position = "none"
)

تفسیر نمودار :
نمودار میله ای فراوانی هر یک از کلاس های احساسی موجود در مجموعه داده را
نمایش میدهد. این نمودار به بررسی توزیع متغیر پاسخ Class کمک
میکند و مشخص میسازد که هر احساس چه تعداد نمونه در مجموعه داده دارد.
بررسی توزیع کلاس ها از اهمیت بالایی برخوردار است، زیرا متوازن بودن تعداد
نمونههای هر کلاس میتواند موجب افزایش دقت و کاهش سوگیری در مدل های طبقه
بندی شود. همچنین این نمودار دید اولیه مناسبی از ساختار مجموعه داده و
نحوه پراکندگی احساسات ارائه میدهد.
نمودار دایره ای
فراوانی احساسات
در این نمودار، سهم
هر کلاس احساسی از کل مجموعه داده به صورت درصدی نمایش داده میشود
ابتدا فراوانی هر
کلاس را محاسبه میکنیم
emotion_count <- emot |>
count(Class)
سپس نمودار را رسم
میکنیم
ggplot(emotion_count,
aes(x = "", y = n, fill = Class)) +
geom_col(color = "white") +
coord_polar(theta = "y") +
labs(
title = "Percentage of Emotion Classes",
fill = "Emotion"
) +
scale_fill_brewer(palette = "Set2") +
theme_void()

تفسیر نمودار :
نمودار دایره ای سهم نسبی هر یک از کلاس های احساسی را از کل مجموعه داده
نشان میدهد. این نمودار به درک بهتر نسبت هر کلاس کمک میکند و به صورت
درصدی بیان میکند که هر احساس چه سهمی از کل داده ها را تشکیل میدهد. با
مقایسه اندازه بخش های مختلف نمودار میتوان وضعیت توزیع کلاس ها را به
سادگی ارزیابی کرد.
نمودار هیستوگرام
میانگین تمپو
در این نمودار توزیع
متغیر Tempo_Mean نمایش داده میشود هیستوگرام یکی از مناسب
ترین نمودارها برای بررسی نحوه توزیع داده های عددی و شناسایی تمرکز
پراکندگی و وجود داده های پرت است
ggplot(emot, aes(x = `_Tempo_Mean`)) +
geom_histogram(
bins = 30,
fill = "#4E79A7",
color = "white"
) +
labs(
title = "Distribution of Mean Tempo",
x = "Mean Tempo",
y = "Frequency"
) +
theme_minimal()

تفسیر نمودار : این
هیستوگرام نحوه توزیع میانگین تمپو در مجموعه داده را نشان میدهد. با
استفاده از این نمودار می توان میزان تمرکز داده ها، گستردگی مقادیر و وجود
احتمالی داده های پرت را بررسی کرد
نمودار چگالی
(Density Plot)
نمودار چگالی، توزیع
پیوسته متغیر Tempo_Mean را نمایش میدهد. این نمودار نسبت به
هیستوگرام، شکل کلی توزیع داده ها را نرم تر نشان میدهد و برای مقایسه
توزیع بین کلاس های مختلف بسیار مناسب است
ggplot(emot,
aes(x = `_Tempo_Mean`,
fill = Class)) +
geom_density(alpha = 0.5) +
labs(
title = "Density Plot of Mean Tempo",
x = "Mean Tempo",
y = "Density"
) +
scale_fill_brewer(palette = "Set2") +
theme_minimal()

تفسیر نمودار :
نمودار چگالی، نحوه توزیع متغیر Tempo_Mean را برای هر یک از
کلاس های احساسی نشان میدهد. این نمودار امکان مقایسه شکل توزیع، میزان
پراکندگی و نواحی تمرکز داده ها را بین کلاس های مختلف فراهم میکند. در
صورت مشاهده هم پوشانی زیاد بین منحنی ها، میتوان نتیجه گرفت که میانگین
تمپو به تنهایی قدرت تفکیک بالایی بین برخی احساسات ندارد و برای طبقه بندی
بهتر، استفاده از سایر ویژگی های صوتی نیز ضروری است.
نمودار جعبه ای (Box
Plot)
نمودار جعبه ای برای
مقایسه توزیع متغیر Tempo_Mean در کلاس های مختلف احساسی
استفاده میشود. این نمودار علاوه بر نمایش میانه و چارک ها، داده های پرت
(Outlier) را نیز مشخص میکند و امکان مقایسه پراکندگی داده ها
بین گروه های مختلف را فراهم میسازد.
ggplot(emot,
aes(x = Class,
y = `_Tempo_Mean`,
fill = Class)) +
geom_boxplot() +
labs(
title = "Box Plot of Mean Tempo by Emotion Class",
x = "Emotion Class",
y = "Mean Tempo"
) +
scale_fill_brewer(palette = "Set2") +
theme_minimal() +
theme(
legend.position = "none",
plot.title = element_text(face = "bold", hjust = 0.5)
)

تفسیر نمودار :
نمودار جعبه ای توزیع متغیر Tempo_Mean را در هر یک از کلاس
های احساسی نمایش میدهد. با استفاده از این نمودار میتوان میانه، دامنه بین
چارکی (IQR)، میزان پراکندگی داده ها و وجود داده های پرت را
برای هر کلاس بررسی کرد. مقایسه جعبه ها نشان میدهد که آیا میانگین تمپو در
احساسات مختلف تفاوت قابل توجهی دارد یا خیر. همچنین نقاط خارج از جعبه به
عنوان داده های پرت شناسایی میشوند که میتوانند در تحلیل های بعدی مورد
بررسی قرار گیرند.
نمودار ویولنی
(Violin Plot)
نمودار ویولنی ترکیبی
از نمودار جعبه ای و نمودار چگالی است. این نمودار علاوه بر نمایش میانه و
پراکندگی داده ها، شکل توزیع متغیر را نیز برای هر کلاس احساسی نشان میدهد
و امکان مقایسه دقیق تر توزیع داده ها بین گروه های مختلف را فراهم
میکند.
ggplot(emot,
aes(x = Class,
y = `_Tempo_Mean`,
fill = Class)) +
geom_violin(trim = FALSE,
alpha = 0.8) +
labs(
title = "Violin Plot of Mean Tempo by Emotion Class",
x = "Emotion Class",
y = "Mean Tempo"
) +
scale_fill_brewer(palette = "Set2") +
theme_minimal() +
theme(
legend.position = "none",
plot.title = element_text(face = "bold", hjust = 0.5)
)

تفسیر نمودار :
نمودار ویولنی توزیع متغیر Tempo_Mean را برای هر کلاس احساسی
نمایش میدهد. پهنای هر قسمت از نمودار نشان دهنده تراکم داده ها در آن
ناحیه است؛ به عبارت دیگر، هرچه نمودار در یک بازه پهن تر باشد، تعداد
بیشتری از داده ها در آن محدوده قرار دارند. این نمودار امکان مقایسه شکل
توزیع، میزان پراکندگی و تفاوت الگوی داده ها را بین احساسات مختلف فراهم
میکند و نسبت به نمودار جعبه ای اطلاعات بیشتری درباره ساختار توزیع ارائه
میدهد.
نمودار چگالی چندگانه
(Multiple Density)
در این نمودار، توزیع
متغیر Tempo_Mean برای هر یک از کلاس های احساسی به صورت هم
زمان نمایش داده می شود تا امکان مقایسه شکل توزیع بین گروه های مختلف
فراهم گردد.
ggplot(emot,
aes(x = `_Tempo_Mean`,
fill = Class)) +
geom_density(alpha = 0.6) +
labs(
title = "Multiple Density Plot of Mean Tempo",
x = "Mean Tempo",
y = "Density"
) +
scale_fill_brewer(palette = "Set2") +
theme_minimal()

تفسیر نمودار : این
نمودار توزیع متغیر Tempo_Mean را برای تمامی کلاس های احساسی
به صورت هم زمان نمایش میدهد. هم پوشانی منحنی ها نشان هنده میزان شباهت
توزیع تمپو بین احساسات مختلف است، در حالی که فاصله میان قله های منحنی ها
میتواند بیانگر تفاوت در الگوی تمپو میان کلاس های احساسی باشد.
نمودار
Ridge Plot
نمودار
Ridge Plot یکی از روش های مناسب برای مقایسه توزیع یک متغیر
عددی در گروه های مختلف است. در این نمودار، توزیع متغیر
Tempo_Mean برای هر یک از کلاس های احساسی به صورت جداگانه
نمایش داده میشود تا مقایسه بین احساسات مختلف آسان تر شود.
ggplot(emot,
aes(x = `_Tempo_Mean`,
y = Class,
fill = Class)) +
geom_density_ridges(alpha = 0.8) +
theme_ridges() +
scale_fill_brewer(palette = "Set2") +
labs(
title = "Ridge Plot of Mean Tempo by Emotion Class",
x = "Mean Tempo",
y = "Emotion Class"
) +
theme(
legend.position = "none",
plot.title = element_text(face = "bold", hjust = 0.5)
)
## Picking joint bandwidth of 11.8

تفسیر نمودار :
نمودار Ridge Plot توزیع متغیر Tempo_Mean را به
تفکیک هر کلاس احساسی نمایش میدهد. این نمودار امکان مقایسه شکل توزیع،
میزان پراکندگی و نواحی تمرکز داده ها را بین کلاس های مختلف فراهم میکند.
هرچه قله منحنی بلندتر باشد، نشان دهنده تمرکز بیشتر داده ها در آن محدوده
از تمپو است و تفاوت بین منحنی ها میتواند بیانگر تفاوت الگوی تمپو در
احساسات مختلف باشد.
نمودار
KDE دومتغیره (Density2D)
در این نمودار، رابطه
بین دو متغیر عددی Tempo_Mean و RMSenergy_Mean
بررسی میشود. خطوط چگالی، نواحی با تمرکز بیشتر داده ها را نشان میدهند و
نمودار پراکندگی نیز موقعیت هر مشاهده را نمایش میدهد
ggplot(emot,
aes(x = `_Tempo_Mean`,
y = `_RMSenergy_Mean`)) +
geom_density2d(color = "red") +
geom_point(color = "steelblue",
alpha = 0.6,
size = 2) +
labs(
title = "2D Kernel Density of Tempo and RMS Energy",
x = "Mean Tempo",
y = "Mean RMS Energy"
) +
theme_minimal()

تفسیر نمودار : این
نمودار رابطه بین میانگین تمپو و میانگین انرژی صوتی را نشان میدهد. نقاط
بیانگر مشاهدات هستند و خطوط چگالی، نواحی با تراکم بیشتر داده ها را مشخص
میکنند. هرچه خطوط به یکدیگر نزدیکتر و متراکم تر باشند، نشان دهنده تمرکز
بیشتر نمونه ها در آن ناحیه است. این نمودار برای بررسی الگوی پراکندگی و
ارتباط احتمالی بین دو ویژگی عددی بسیار مفید است.
نمودار
KDE دومتغیره رنگی (Density2D Filled)
این نمودار نسخه
پیشرفته تر نمودار چگالی دومتغیره است. در این روش، نواحی با تراکم بیشتر
داده ها با رنگهای مختلف نمایش داده میشوند و درک بهتری از محل تجمع داده
ها فراهم میشود.
ggplot(emot,
aes(x = `_Tempo_Mean`,
y = `_RMSenergy_Mean`)) +
geom_density2d_filled(alpha = 0.7) +
geom_point(color = "black",
size = 1.5,
alpha = 0.5) +
labs(
title = "Filled 2D Kernel Density of Tempo and RMS Energy",
x = "Mean Tempo",
y = "Mean RMS Energy"
) +
theme_minimal()

تفسیر نمودار : در
این نمودار، نواحی با رنگهای پررنگ تر نشان دهنده تراکم بیشتر داده ها
هستند. این ویژگی باعث میشود محل تجمع نمونه ها با وضوح بیشتری نسبت به
نمودار خطوط چگالی مشخص شود. همچنین پراکندگی نقاط در کنار نواحی رنگی، درک
بهتری از رابطه بین متغیرهایTempo_Mean و
RMSenergy_Mean ارائه میدهد
نمودار ماتریس همبستگی
(Correlation Plot)
در این بخش، میزان
همبستگی بین تعدادی از مهم ترین ویژگی های صوتی مجموعه داده بررسی میشود.
ماتریس همبستگی به شناسایی متغیرهایی که دارای ارتباط مثبت یا منفی با
یکدیگر هستند کمک میکند.
selected_features <- emot |>
select(
`_Tempo_Mean`,
`_RMSenergy_Mean`,
`_AttackTime_Mean`,
`_Brightness_Mean`,
`_Roughness_Mean`,
`_Spectralcentroid_Mean`,
`_Spectralspread_Mean`,
`_Zero-crossingrate_Mean`,
`_Lowenergy_Mean`,
`_Pulseclarity_Mean`
)
cor_mat <- cor(selected_features)
ggcorrplot(
cor_mat,
method = "circle",
hc.order = TRUE,
lab = TRUE,
type = "upper"
)

تحلیل و تفسیر
نمودار : این نمودار میزان همبستگی بین ویژگی های مهم صوتی را نمایش میدهد.
ضرایب همبستگی مثبت نشان دهنده افزایش هم زمان دو متغیر و ضرایب منفی
بیانگر رابطه معکوس بین آنها هستند. همچنین مرتب سازی خوشه ای
(Hierarchical Clustering) باعث میشود ویژگی های مشابه در
کنار یکدیگر قرار گیرند و الگوهای ارتباطی بهتر قابل مشاهده باشند.
نمودار
GGPairs
نمودار
GGPairs برای بررسی هم زمان روابط بین چندین متغیر عددی
استفاده میشود. این نمودار علاوه بر نمایش نمودارهای پراکندگی، توزیع هر
متغیر و ضرایب همبستگی را نیز نمایش میدهد و یکی از کاربردی ترین ابزارها
برای تحلیل اکتشافی داده ها (EDA) است.
emot |>
select(
Class,
`_Tempo_Mean`,
`_RMSenergy_Mean`,
`_Brightness_Mean`,
`_Roughness_Mean`
) |>
ggpairs(aes(color = Class, alpha = 0.7))
## `stat_bin()` using `bins = 30`. Pick better value `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value `binwidth`.

تفسیر نمودار :
نمودار GGPairs روابط بین ویژگی های مهم صوتی را به صورت هم زمان نمایش
میدهد. در قطر اصلی ماتریس، توزیع هر متغیر نمایش داده شده و در سایر خانه
ها، نمودارهای پراکندگی و میزان ارتباط بین متغیرها قابل مشاهده است. این
نمودار به شناسایی الگوها، همبستگی ها و تفاوت کلاس های احساسی کمک میکند و
یکی از مهم ترین ابزارهای تحلیل اکتشافی داده ها به شمار میرود.
نمودار میله ای
تعاملی
در این بخش، نمودار
میله ای با استفاده از بسته Plotly به صورت تعاملی نمایش داده
میشود. کاربر میتواند با قرار دادن نشانگر ماوس روی هر ستون، اطلاعات مربوط
به آن کلاس احساسی را مشاهده کند.
bar_plot <- ggplot(emot,
aes(x = Class,
fill = Class)) +
geom_bar() +
labs(
title = "Interactive Emotion Distribution",
x = "Emotion",
y = "Frequency"
) +
scale_fill_brewer(palette = "Set2") +
theme_minimal()
ggplotly(bar_plot)
تفسیر نمودار : این
نمودار همان توزیع کلاس های احساسی را به صورت تعاملی نمایش میدهد. قابلیت
تعامل با نمودار باعث میشود کاربر بتواند اطلاعات هر ستون را با حرکت
نشانگر ماوس مشاهده کند و تحلیل دقیق تری از داده ها داشته باشد.
نمودار پراکندگی
تعاملی
در این نمودار رابطه
بین میانگین تمپو و میانگین انرژی صوتی به صورت تعاملی نمایش داده
میشود.
scatter_plot <- ggplot(
emot,
aes(
x = `_Tempo_Mean`,
y = `_RMSenergy_Mean`,
color = Class
)
) +
geom_point(size = 2) +
labs(
title = "Interactive Scatter Plot",
x = "Mean Tempo",
y = "Mean RMS Energy"
) +
theme_minimal()
ggplotly(scatter_plot)
تفسیر نمودار : این
نمودار رابطه بین دو ویژگی مهم صوتی را نمایش میدهد. امکان بزرگ نمایی،
جابه جایی و مشاهده اطلاعات هر نقطه باعث میشود تحلیل داده ها دقیق تر و
آسان تر انجام شود.
نمودار رگرسیونی
(Regression Plot)
در این نمودار، رابطه
بین دو متغیر عددی Tempo_Mean و RMSenergy_Mean
بررسی میشود. علاوه بر نمایش نقاط، یک خط رگرسیون خطی نیز رسم میشود تا
روند کلی تغییرات و جهت ارتباط بین دو متغیر مشخص گردد.
ggplot(emot,
aes(x = `_Tempo_Mean`,
y = `_RMSenergy_Mean`,
color = Class)) +
geom_point(alpha = 0.7, size = 2) +
geom_smooth(
aes(group = 1),
method = "lm",
color = "black",
se = TRUE,
linewidth = 1
) +
scale_color_brewer(palette = "Set2") +
labs(
title = "Regression Plot of Tempo and RMS Energy",
x = "Mean Tempo",
y = "Mean RMS Energy",
color = "Emotion"
) +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

تحلیل و تفسیر
نمودار : این نمودار رابطه بین متغیرهای Tempo_Mean و
RMSenergy_Mean را به همراه خط رگرسیون خطی نمایش میدهد. نقاط
آبی نشان دهنده مشاهدات مجموعه داده هستند و خط قرمز روند کلی تغییرات را
مشخص میکند. اگر شیب خط رگرسیون مثبت باشد، نشان دهنده افزایش هم زمان
میانگین انرژی صوتی با افزایش تمپو است و اگر شیب منفی باشد، بیانگر رابطه
معکوس بین این دو متغیر خواهد بود. همچنین ناحیه سایه دار اطراف خط، بازه
اطمینان مدل رگرسیونی را نمایش میدهد.