TRANS: reviewed az translation 5.2

pull/777/head^2
Karim Karimov 2 years ago
parent 25d83efb68
commit 4ea767bee6
No known key found for this signature in database

@ -129,7 +129,7 @@ Zərərin baş verməsinin qabağını almaq üçün ilk növbədə biz:
Modelin qurulmasında və istifadəsində etibarsızlığın aşkar olduğu real həyat ssenariləri haqqında düşünün. Başqa nələri nəzərə almalıyıq? Modelin qurulmasında və istifadəsində etibarsızlığın aşkar olduğu real həyat ssenariləri haqqında düşünün. Başqa nələri nəzərə almalıyıq?
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/6/?loc=az) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/6/?loc=az)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -109,7 +109,7 @@ Bu dərslərdə siz data mühəndisinin istifadə etdiyi jestlərin hamısını
ML təcrübəçisinin addımlarını əks etdirən proses sxemini çəkin. Hazırda prosesin gedişində özünüzü harada görürsünüz? Harada çətinlik çəkəcəyinizi proqnozlaşdırırsınız? Sizə asan görünən nədir? ML təcrübəçisinin addımlarını əks etdirən proses sxemini çəkin. Hazırda prosesin gedişində özünüzü harada görürsünüz? Harada çətinlik çəkəcəyinizi proqnozlaşdırırsınız? Sizə asan görünən nədir?
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/8/?loc=az) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/8/?loc=az)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -211,7 +211,7 @@ Yeni kod xanasında, şəkərli diabet data setini `load_diabetes()` çağırara
Bu data setindən fərqli bir dəyişən üçün qrafik çəkin. İpucu: bu sətirə düzəliş edin: `X = X[:,2]`. Data massivinin hədəfi verilmək şərti ilə şəkərli diabetin xəstəlik olaraq inkişafı ilə bağlı nələri tapa bilərsiniz? Bu data setindən fərqli bir dəyişən üçün qrafik çəkin. İpucu: bu sətirə düzəliş edin: `X = X[:,2]`. Data massivinin hədəfi verilmək şərti ilə şəkərli diabetin xəstəlik olaraq inkişafı ilə bağlı nələri tapa bilərsiniz?
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/10/?loc=az) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/10/?loc=az)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -198,7 +198,7 @@ Qrafiklərin yararlı informasiya göstərə bilməsi üçün adətən dataları
Matplotlib-in təklif etdiyi müxtəlif vizuallaşdırma tiplərini araşdırın. Hansılar reqressiya problemləri üçün ən uyğunudur? Matplotlib-in təklif etdiyi müxtəlif vizuallaşdırma tiplərini araşdırın. Hansılar reqressiya problemləri üçün ən uyğunudur?
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12/?loc=az) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12/?loc=az)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -347,7 +347,7 @@ Bu bizə 97%-lə ən yaxşı determinasiya əmsalını, və OKX=2.23 (~8% təxmi
Bu notbukda bir neçə fərqli dəyişəni test edərək korrelyasiyanın modelin dəqiqliyinə necə təsir etdiyini izləyin. Bu notbukda bir neçə fərqli dəyişəni test edərək korrelyasiyanın modelin dəqiqliyinə necə təsir etdiyini izləyin.
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/?loc=az) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/?loc=az)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -386,7 +386,7 @@ Klassifikasiya ilə bağlı gələcək dərslərdə, modelin balını yüksəltm
Logistik reqressiya mövzusunda öyrəniləsi hələ çox şey var. Amma ən yaxşı öyrənmə təcrübə etməkdir. Bunun üçün dərsdəki analizə bənzər bir dataset tapın və onunla bir model qurun. Nə öyrəndiniz? Maraqlı datasetlər üçün [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) yoxlaya bilərsiniz. Logistik reqressiya mövzusunda öyrəniləsi hələ çox şey var. Amma ən yaxşı öyrənmə təcrübə etməkdir. Bunun üçün dərsdəki analizə bənzər bir dataset tapın və onunla bir model qurun. Nə öyrəndiniz? Maraqlı datasetlər üçün [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) yoxlaya bilərsiniz.
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/16/?loc=az) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/16/?loc=az)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -332,7 +332,7 @@ Peşəkar şəraitdə modeli öyrədən insanlarla onu veb və ya mobil proqramd
Noutbukda işləyərək modeli Flask proqramına daxil etmək yerinə onu birbaşa Flask proqramında öyrədə bilərsiniz! Modeli `train` adlı istiqamət üzrə proqram daxilində öyrətmək üçün, məsələn, məlumatlarınız təmizləndikdən sonra Python kodunuzu notbukda çevirməyə cəhd edin. Bu metodu tətbiq etməyin müsbət və mənfi tərəfləri nələrdir? Noutbukda işləyərək modeli Flask proqramına daxil etmək yerinə onu birbaşa Flask proqramında öyrədə bilərsiniz! Modeli `train` adlı istiqamət üzrə proqram daxilində öyrətmək üçün, məsələn, məlumatlarınız təmizləndikdən sonra Python kodunuzu notbukda çevirməyə cəhd edin. Bu metodu tətbiq etməyin müsbət və mənfi tərəfləri nələrdir?
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/18/?loc=az) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/18/?loc=az)
## Təkrarla və özün öyrən ## Təkrarla və özün öyrən

@ -288,7 +288,7 @@ Datanı təmizlədikdən sonra, onu balanslaşdırmaq üçün [SMOTE](https://im
Bu proqramda bir neçə maraqlı dataset var. `data` qovluqlarına baxın. Bu qovluqlardan hansısa birində ikili və çox sinifli qruplaşdırıcı üçün uyğun ola biləcək datasetlər varmı? Onlar haqqında hansı sualları verərdiniz? Bu proqramda bir neçə maraqlı dataset var. `data` qovluqlarına baxın. Bu qovluqlardan hansısa birində ikili və çox sinifli qruplaşdırıcı üçün uyğun ola biləcək datasetlər varmı? Onlar haqqında hansı sualları verərdiniz?
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/20/?loc=az) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/20/?loc=az)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -231,7 +231,7 @@ Biz çoxsaylı etiket məsələsinə baxdığımız üçün _scheme_ və _solver
Bu dərsdə siz təmizlənmiş data istifadə edərək inqrediyentlər əsasında milli mətbəxi təxmin edə biləcək maşın öyrənməsi modelini qurdunuz. Scikit-learn kitabxanası istifadə etməklə daha hansı üsullarla qruplaşdırma etmək mümkün olduğunu oxuyun. "Solver (alqoritm)" anlayışı üzərində daha dərinə gedərək arxa planda necə işlədiyini öyrənin. Bu dərsdə siz təmizlənmiş data istifadə edərək inqrediyentlər əsasında milli mətbəxi təxmin edə biləcək maşın öyrənməsi modelini qurdunuz. Scikit-learn kitabxanası istifadə etməklə daha hansı üsullarla qruplaşdırma etmək mümkün olduğunu oxuyun. "Solver (alqoritm)" anlayışı üzərində daha dərinə gedərək arxa planda necə işlədiyini öyrənin.
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/22/?loc=az) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/22/?loc=az)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -222,7 +222,7 @@ Maşın Öyrənməsinin bu metodu modelin keyfiyyətini artırmaq üçün 'bir n
Bu texnikaların hər birinin dəyişiklər edə biləcəyiniz çox sayda parametrləri mövcuddur. Hər birinin standart olaraq təyin edilmiş parametrlərini araşdırın və bu parametrlərin dəyişdirilməsinin modelin keyfiyyəti üçün önəmi haqqında düşünün. Bu texnikaların hər birinin dəyişiklər edə biləcəyiniz çox sayda parametrləri mövcuddur. Hər birinin standart olaraq təyin edilmiş parametrlərini araşdırın və bu parametrlərin dəyişdirilməsinin modelin keyfiyyəti üçün önəmi haqqında düşünün.
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/24/?loc=az) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/24/?loc=az)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -300,7 +300,7 @@ Təbriklər, 'tövsiyyə edən' veb tətbiq yaratdıq. İndi isə sistemi qurmaq
Hazırki veb tətbiq minimal səviyyədədir. Bu səbəbdən inqrediyentlər və onların indekslərinə əsasən [ingredient_indexes](../../data/ingredient_indexes.csv) datasından istifadə etməklə davam etmək lazımdır. Verilmiş milli yeməyi hazırlamaq üçün hansı dadlardan istifadə edilməlidir, müəyyən edək. Hazırki veb tətbiq minimal səviyyədədir. Bu səbəbdən inqrediyentlər və onların indekslərinə əsasən [ingredient_indexes](../../data/ingredient_indexes.csv) datasından istifadə etməklə davam etmək lazımdır. Verilmiş milli yeməyi hazırlamaq üçün hansı dadlardan istifadə edilməlidir, müəyyən edək.
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/26/?loc=az) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/26/?loc=az)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -320,7 +320,7 @@ Bu üç janr populyarlıqlarına görə onların oynaqlıq dərəcəsini dərk e
Növbəti dərsə hazırlıq üçün indiyə qədər haqqında öyrənmiş olduğunuz müxtəlif klasterləşdirmə alqoritmlərinin olduğu bir qrafik hazırlayın və onları real mühitdə istifadə edin. Klasterləşdirmə hansı qrup problemləri həll etməyə çalışır? Növbəti dərsə hazırlıq üçün indiyə qədər haqqında öyrənmiş olduğunuz müxtəlif klasterləşdirmə alqoritmlərinin olduğu bir qrafik hazırlayın və onları real mühitdə istifadə edin. Klasterləşdirmə hansı qrup problemləri həll etməyə çalışır?
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/28/?loc=az) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/28/?loc=az)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -1,8 +1,8 @@
# K-Ortalama Klasterləşməsi # K-Ortalama Klasterləşməsi
## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/29/) ## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/29/?loc=az)
Bu dərsdə siz Scikit-learn və Nigeriya musiqiləri data seti ilə klasterlərin yaradılması öyrənəcəksiniz. Biz Klasterləşmə üçünü K-Ortalamanın əsaslarından bəhs edəcəyik. Unutmayın ki, əvvəlki dərslərdən də sizə tanış olduğu kimi, klasterlərmə işləməyin müxtəlif yolları var və istifadə metodunuz datanızdan bilavasitə asılıdır. Ən yayğın klasterləşmə textnikası olduğu üçün K-Ortalamanı istifadə edəcəyik. Gəlin başlayaq! Bu dərsdə siz Scikit-learn və Nigeriya musiqiləri data seti ilə klasterlərin yaradılması öyrənəcəksiniz. Biz Klasterləşmə üçünü K-Ortalamanın əsaslarından bəhs edəcəyik. Unutmayın ki, əvvəlki dərslərdən də sizə tanış olduğu kimi, klasterlərlə işləməyin müxtəlif yolları var və istifadə metodunuz datanızdan bilavasitə asılıdır. Ən yayğın klasterləşmə texnikası olduğu üçün K-Ortalamanı istifadə edəcəyik. Gəlin başlayaq!
Haqqında öyrənəcəyiniz anlayışlar: Haqqında öyrənəcəyiniz anlayışlar:
- Siluet hesabı - Siluet hesabı
@ -20,12 +20,12 @@ Klasterlər [Voronoy diaqramları](https://wikipedia.org/wiki/Voronoi_diagram) k
> [Jen Looper](https://twitter.com/jenlooper) tərəfindən çəkilmiş infoqrafik > [Jen Looper](https://twitter.com/jenlooper) tərəfindən çəkilmiş infoqrafik
1. Alqoritm data setindən seçmə yolu ilə mərkəz nöqtələrinin k-sayda seçir. Bundan sonra, aşağıdakı addımları dövri olaraq təkrar edir: 1. Alqoritm datasetdən seçmə yolu ilə mərkəz nöqtələrinin k-sayda seçir. Bundan sonra, aşağıdakı addımları dövri olaraq təkrar edir:
1. O, hər bir nümunəni ən yaxın mərkəzə təyin edir. 1. O, hər bir nümunəni ən yaxın mərkəzə təyin edir.
2. Əvvəlki mərkəzlərə təyin edilmiş bütün nümunələrin orta qiymətini alaraq yeni mərkəzlər yaradır. 2. Əvvəlki mərkəzlərə təyin edilmiş bütün nümunələrin orta qiymətini alaraq yeni mərkəzlər yaradır.
3. Sonra, yeni və köhnə mərkəzlər arasındakı fərqi hesablayır və mərkəzlər sabitləşənə qədər təkrarlanır. 3. Sonra yeni və köhnə mərkəzlər arasındakı fərqi hesablayır və mərkəzlər sabitləşənə qədər təkrarlanır.
K-Ortalama istifadə etməyin bir çatışmazlığı, 'k'-ı, yəni mərkəzlərin sayını qurmağınız lazım olacaq. Xoşbəxtlikdən, "dirsək üsulu" "k" üçün yaxşı başlanğıc dəyərini tapmağa kömək edir. Bir dəqiqədən sonra sınayacaqsınız. K-Ortalama istifadə etməyin bir çatışmazlığı, 'k'-nı, yəni mərkəzlərin sayını qurmağınız lazım olacaq. Xoşbəxtlikdən "dirsək üsulu" "k" üçün yaxşı başlanğıc dəyərini tapmağa kömək edir. Bir dəqiqədən sonra sınayacaqsınız.
## İlkin şərt ## İlkin şərt
@ -39,62 +39,62 @@ Mahnı məlumatlarına bir daha nəzər salmaqla başlayın.
```python ```python
plt.figure(figsize=(20,20), dpi=200) plt.figure(figsize=(20,20), dpi=200)
plt.subplot(4,3,1) plt.subplot(4,3,1)
sns.boxplot(x = 'popularity', data = df) sns.boxplot(x = 'popularity', data = df)
plt.subplot(4,3,2) plt.subplot(4,3,2)
sns.boxplot(x = 'acousticness', data = df) sns.boxplot(x = 'acousticness', data = df)
plt.subplot(4,3,3) plt.subplot(4,3,3)
sns.boxplot(x = 'energy', data = df) sns.boxplot(x = 'energy', data = df)
plt.subplot(4,3,4) plt.subplot(4,3,4)
sns.boxplot(x = 'instrumentalness', data = df) sns.boxplot(x = 'instrumentalness', data = df)
plt.subplot(4,3,5) plt.subplot(4,3,5)
sns.boxplot(x = 'liveness', data = df) sns.boxplot(x = 'liveness', data = df)
plt.subplot(4,3,6) plt.subplot(4,3,6)
sns.boxplot(x = 'loudness', data = df) sns.boxplot(x = 'loudness', data = df)
plt.subplot(4,3,7) plt.subplot(4,3,7)
sns.boxplot(x = 'speechiness', data = df) sns.boxplot(x = 'speechiness', data = df)
plt.subplot(4,3,8) plt.subplot(4,3,8)
sns.boxplot(x = 'tempo', data = df) sns.boxplot(x = 'tempo', data = df)
plt.subplot(4,3,9) plt.subplot(4,3,9)
sns.boxplot(x = 'time_signature', data = df) sns.boxplot(x = 'time_signature', data = df)
plt.subplot(4,3,10) plt.subplot(4,3,10)
sns.boxplot(x = 'danceability', data = df) sns.boxplot(x = 'danceability', data = df)
plt.subplot(4,3,11) plt.subplot(4,3,11)
sns.boxplot(x = 'length', data = df) sns.boxplot(x = 'length', data = df)
plt.subplot(4,3,12) plt.subplot(4,3,12)
sns.boxplot(x = 'release_date', data = df) sns.boxplot(x = 'release_date', data = df)
``` ```
Bu məlumatlar bir az səs-küylüdür: hər sütunu bir boxplot şəklində müşahidə etməklə, kənar göstəriciləri görə bilərsiniz. Bu məlumatlar bir az səs-küylüdür: hər sütunu bir boxplot şəklində müşahidə etməklə kənar göstəriciləri görə bilərsiniz.
![kənar göstəricilər](../images/boxplots.png) ![kənar göstəricilər](../images/boxplots.png)
Siz datasetə göz gəzdirə və oradan kənar göstəriciləri silə bilərsiniz, amma belə olduqda datalar olduqca minimal olacaqdır. Siz datasetə göz gəzdirə və oradan kənar göstəriciləri silə bilərsiniz, amma belə olduqda datalar olduqca minimal olacaqdır.
1. Hələlik, klasterləşdirmə tapşırığınız üçün hansı sütunlardan istifadə edəcəyinizi seçin. Oxşar diapazonlu olanları seçin və `artist_top_genre` sütununu rəqəmsal data kimi kodlayın: 1. Hələlik klasterləşdirmə tapşırığınız üçün hansı sütunlardan istifadə edəcəyinizi seçin. Oxşar diapazonlu olanları seçin və `artist_top_genre` sütununu rəqəmsal data kimi kodlayın:
```python ```python
from sklearn.preprocessing import LabelEncoder from sklearn.preprocessing import LabelEncoder
le = LabelEncoder() le = LabelEncoder()
X = df.loc[:, ('artist_top_genre','popularity','danceability','acousticness','loudness','energy')] X = df.loc[:, ('artist_top_genre','popularity','danceability','acousticness','loudness','energy')]
y = df['artist_top_genre'] y = df['artist_top_genre']
X['artist_top_genre'] = le.fit_transform(X['artist_top_genre']) X['artist_top_genre'] = le.fit_transform(X['artist_top_genre'])
y = le.transform(y) y = le.transform(y)
``` ```
@ -102,15 +102,15 @@ Siz datasetə göz gəzdirə və oradan kənar göstəriciləri silə bilərsini
```python ```python
from sklearn.cluster import KMeans from sklearn.cluster import KMeans
nclusters = 3 nclusters = 3
seed = 0 seed = 0
km = KMeans(n_clusters=nclusters, random_state=seed) km = KMeans(n_clusters=nclusters, random_state=seed)
km.fit(X) km.fit(X)
# Hər bir nöqtə üçün klasteri təxmin edin # Hər bir nöqtə üçün klasteri təxmin edin
y_cluster_kmeans = km.predict(X) y_cluster_kmeans = km.predict(X)
y_cluster_kmeans y_cluster_kmeans
``` ```
@ -125,36 +125,36 @@ Siz data setdəki hər bir sətir üçün proqnozlaşdırılan klasterlərlə (0
score score
``` ```
## Siluet xalını ## Siluet xalı
Siluet hesabı 1-ə yaxın olanı axtarın. Bu xal -1-dən 1-ə qədər dəyişir və əgər xal 1-dirsə, deməli klaster sıx və digər çoxluqlardan yaxşı ayrılmışdır. 0-a yaxın dəyər isə qonşu klasterlərin qərar sərhədinə çox yaxın olan nümunələrlə üst-üstə düşən klasterləri təmsil edir. [(Mənbə)](https://dzone.com/articles/kmeans-silhouette-score-explained-with-python-exam) Siluet hesabı 1-ə yaxın olanı axtarın. Bu xal -1-dən 1-ə qədər dəyişir və əgər xal 1-dirsə, deməli klaster sıx və digər çoxluqlardan yaxşı ayrılmışdır. 0-a yaxın dəyər isə qonşu klasterlərin qərar sərhədinə çox yaxın olan nümunələrlə üst-üstə düşən klasterləri təmsil edir. [(Mənbə)](https://dzone.com/articles/kmeans-silhouette-score-explained-with-python-exam)
Hesabımız **.53**-dir, yəni ortadadır. Bu, məlumatlarımızın bu tip klasterləşdirmə üçün o qədər də uyğun olmadığını göstərir, amma davam edək. Hesabımız **.53**-dür, yəni ortadadır. Bu, məlumatlarımızın bu tip klasterləşdirmə üçün o qədər də uyğun olmadığını göstərir, amma davam edək.
### Tapşırıq - model qurun ### Tapşırıq - model qurun
1. `KMeans`-i import edin və klasterləşdirmə prosesinə başlayın. 1. `KMeans` dəyərini daxil edin və klasterləşdirmə prosesinə başlayın.
```python ```python
from sklearn.cluster import KMeans from sklearn.cluster import KMeans
wcss = [] wcss = []
for i in range(1, 11): for i in range(1, 11):
kmeans = KMeans(n_clusters = i, init = 'k-means++', random_state = 42) kmeans = KMeans(n_clusters = i, init = 'k-means++', random_state = 42)
kmeans.fit(X) kmeans.fit(X)
wcss.append(kmeans.inertia_) wcss.append(kmeans.inertia_)
``` ```
Burada izah tələb edən bir neçə məqam var. Burada izah tələb edən bir neçə məqam var.
> 🎓 diapazon: Bunlar klasterləşmə prosesinin iterasiyalarıdır > 🎓 diapazon: Bunlar klasterləşmə prosesinin dövrləridir
> 🎓 random_state: "Mərkəzi nöqtənin ilkin təyini üçün təsadüfi ədəd generasiyasını müəyyən edir." [Mənbə](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans) > 🎓 random_state: "Mərkəzi nöqtənin ilkin təyini üçün təsadüfi ədəd generasiyasını müəyyən edir." [Mənbə](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans)
> 🎓 WCSS: "kvadratların çoxluqdaxili cəmi" çoxluqdakı bütün nöqtələrin klaster mərkəzinə olan orta məsafəsinin kvadratını ölçür. [Mənbə](https://medium.com/@ODSC/unsupervised-learning-evaluating-clusters-bd47eed175ce). > 🎓 WCSS: "kvadratların çoxluqdaxili cəmi" çoxluqdakı bütün nöqtələrin klaster mərkəzinə olan orta məsafəsinin kvadratını ölçür. [Mənbə](https://medium.com/@ODSC/unsupervised-learning-evaluating-clusters-bd47eed175ce).
> 🎓 Ətalət: K-Ortalama alqoritmləri “ətalət”-i, daha dəqiq desək “daxili çoxluqların nə əlaqəliliyinin ölçülməsini” minimuma endirmək üçün mərkəzləri seçməyə çalışır. [Mənbə](https://scikit-learn.org/stable/modules/clustering.html). Dəyər hər iterasiyada wcss dəyişəninə əlavə olunur. > 🎓 Ətalət: K-Ortalama alqoritmləri “ətalət”-i, daha dəqiq desək “daxili çoxluqların əlaqəliliyinin ölçülməsini” minimuma endirmək üçün mərkəzləri seçməyə çalışır. [Mənbə](https://scikit-learn.org/stable/modules/clustering.html). Dəyər hər dövrdə wcss dəyişəninə əlavə olunur.
> 🎓 k-means++: [Scikit-learn]-də(https://scikit-learn.org/stable/modules/clustering.html#k-means) "k-means++" optimallaşdırmasından istifadə edə bilərsiniz. Mərkəzlərin (ümumiyyətlə) bir-birindən uzaq olması, təsadüfi başlanğıcdan daha yaxşı nəticələrə gətirib çıxarır. > 🎓 k-means++: [Scikit-learn]-də(https://scikit-learn.org/stable/modules/clustering.html#k-means) "k-means++" optimallaşdırmasından istifadə edə bilərsiniz. Mərkəzlərin (ümumiyyətlə) bir-birindən uzaq olması, təsadüfi başlanğıcdan daha yaxşı nəticələrə gətirib çıxarır.
@ -173,7 +173,7 @@ Hesabımız **.53**-dir, yəni ortadadır. Bu, məlumatlarımızın bu tip klast
plt.show() plt.show()
``` ```
Dirsəkdəki 'əyilmə'-nin harada olduğunu göstərən diaqram yaratmaq üçün əvvəlki addımda qurduğunuz `wcss` dəyişənindən istifadə edin.Bu dəyişən optimal klaster sayını göstərir. Bəlkə də elə **3-dür**! Dirsəkdəki 'əyilmə'-nin harada olduğunu göstərən diaqram yaratmaq üçün əvvəlki addımda qurduğunuz `wcss` dəyişənindən istifadə edin. Bu dəyişən optimal klaster sayını göstərir. Bəlkə də elə **3-dür**!
![dirsək üsulu](../images/elbow.png) ![dirsək üsulu](../images/elbow.png)
@ -196,11 +196,11 @@ Hesabımız **.53**-dir, yəni ortadadır. Bu, məlumatlarımızın bu tip klast
```python ```python
labels = kmeans.labels_ labels = kmeans.labels_
correct_labels = sum(y == labels) correct_labels = sum(y == labels)
print("Result: %d out of %d samples were correctly labeled." % (correct_labels, y.size)) print("Result: %d out of %d samples were correctly labeled." % (correct_labels, y.size))
print('Accuracy score: {0:0.2f}'. format(correct_labels/float(y.size))) print('Accuracy score: {0:0.2f}'. format(correct_labels/float(y.size)))
``` ```
@ -210,32 +210,32 @@ Hesabımız **.53**-dir, yəni ortadadır. Bu, məlumatlarımızın bu tip klast
Bu məlumatlar çox balanssızdır, çox aşağı korrelyasiyalıdır və yaxşı qruplaşdırmaq üçün sütun dəyərləri arasında çoxlu fərq var. Əslində, formalaşan klasterlər, çox güman ki, yuxarıda müəyyən etdiyimiz üç janr kateqoriyasından çox təsirlənmiş və ya əyilmişdir. Bu, öyrənmə prosesi idi! Bu məlumatlar çox balanssızdır, çox aşağı korrelyasiyalıdır və yaxşı qruplaşdırmaq üçün sütun dəyərləri arasında çoxlu fərq var. Əslində, formalaşan klasterlər, çox güman ki, yuxarıda müəyyən etdiyimiz üç janr kateqoriyasından çox təsirlənmiş və ya əyilmişdir. Bu, öyrənmə prosesi idi!
Scikit-learn-in sənədlərində, çox yaxşı demarkasiya edilməmiş çoxluqları olan bu kimi bir modelin "variasiya" problemi olduğunu görə bilərsiniz: Scikit-learn-in sənədlərində çox yaxşı demarkasiya edilməmiş çoxluqları olan bu kimi bir modelin "variasiya" problemi olduğunu görə bilərsiniz:
![problem modelləri](../images/problems.png) ![problem modelləri](../images/problems.png)
> Scikit-learn-dən infoqrafik > Scikit-learn-dən infoqrafik
## Variasiya ## Variasiya
Variasiya "Ortalamadan kvadrat fərqlərin ortası" [(Mənbə)](https://www.mathsisfun.com/data/standard-deviation.html) kimi müəyyən edilir. Bu klaster problemi kontekstində, data setimizin nömrələrinin orta qiymətdən bir qədər çox ayrılmağa meyilli olduğu məlumatlara aiddir. Variasiya "Ortalamadan kvadrat fərqlərin ortası" [(Mənbə)](https://www.mathsisfun.com/data/standard-deviation.html) kimi müəyyən edilir. Bu klaster problemi kontekstində datasetimizin nömrələrinin orta qiymətdən bir qədər çox ayrılmağa meyilli olduğu məlumatlara aiddir.
✅ Hazırki problemi düzəltmək üçün mümkün olan bütün yollar haqqında düşünmək üçün əla vaxtdır. Məlumatları bir az daha dəyişək? Fərqli sütunlar istifadə olunur? Fərqli alqoritmdən istifadə edilir? İpucu: Normallaşdırmaq və digər sütunları yoxlamaq üçün [məlumatlarınızı miqyaslandırmağa](https://www.mygreatlearning.com/blog/learning-data-science-with-k-means-clustering/) cəhd edin. ✅ Hazırki problemi düzəltmək üçün mümkün olan bütün yollar haqqında düşünmək üçün əla vaxtdır. Məlumatları bir az daha dəyişək? Fərqli sütunlar istifadə olunur? Fərqli alqoritmdən istifadə edilir? İpucu: Normallaşdırmaq və digər sütunları yoxlamaq üçün [məlumatlarınızı miqyaslandırmağa](https://www.mygreatlearning.com/blog/learning-data-science-with-k-means-clustering/) cəhd edin.
> Konsepti bir az daha başa düşmək üçün '[variasiya kalkulyatorunu](https://www.calculatorsoup.com/calculators/statistics/variance-calculator.php)' yoxlayın. > Konsepti bir az daha yaxşı başa düşmək üçün '[variasiya kalkulyatorunu](https://www.calculatorsoup.com/calculators/statistics/variance-calculator.php)' yoxlayın.
--- ---
## 🚀Məşğələ ## 🚀 Məşğələ
Parametrləri düzəltmək üçün bu dəftərçə faylında bir az vaxt keçirin. Məlumatları daha çox təmizləməklə (məsələn, kənar göstəriciləri silməklə) modelin dəqiqliyini artıra bilərsinizmi? Verilmiş məlumat nümunələrinə daha çox çəki vermək üçün çəkilərdən istifadə edə bilərsiniz. Daha yaxşı klasterlər yaratmaq üçün başqa nə edə bilərsiniz? Parametrləri düzəltmək üçün bu notbuk faylında bir az vaxt keçirin. Məlumatları daha çox təmizləməklə (məsələn, kənar göstəriciləri silməklə) modelin dəqiqliyini artıra bilərsinizmi? Verilmiş məlumat nümunələrinə daha çox çəki vermək üçün çəkilərdən istifadə edə bilərsiniz. Daha yaxşı klasterlər yaratmaq üçün başqa nə edə bilərsiniz?
İpucu: Məlumatlarınızı ölçməyə çalışın. Dəftərçədə məlumat sütunlarının diapazon baxımından bir-birinə daha çox bənzəməsi üçün standart miqyas əlavə edən şərhə alınmış kod var. Siz, siluet göstəricisi aşağı düşərkən, dirsək qrafikindəki 'bilmə'-nin hamarlaşdığını tapa bilərsiniz. Bunun səbəbi, verilənlərin miqyassız buraxılması daha az fərqlilikli məlumatların daha çox çəki daşımasına imkan verir. Bu problem haqqında bir az daha ətraflı [burada](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226 ) oxuyun. İpucu: Məlumatlarınızı ölçməyə çalışın. Notbukda məlumat sütunlarının diapazon baxımından bir-birinə daha çox bənzəməsi üçün standart miqyas əlavə edən şərhə alınmış kod var. Siz, siluet göstəricisi aşağı düşərkən dirsək qrafikindəki 'bilmə'-nin hamarlaşdığını tapa bilərsiniz. Bu, datanın miqyassız buraxılmasının daha az variasiya ilə daha çox çəki daşımasına imkan verməsinə görə baş verir. Bu problem haqqında bir az daha ətraflı [buradan](https://stats.stackexchange.com/questions/21222/are-mean-normalization-and-feature-scaling-needed-for-k-means-clustering/21226#21226) oxuyun.
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/30/) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/30/?loc=az)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin
[Bu kimi](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/) K-Ortalama Simulyatoruna nəzər salın. Nümunə məlumat nöqtələrini vizuallaşdırmaq və onların mərkəzlərini təyin etmək üçün bu alətdən istifadə edə bilərsiniz. Bundan əlavə, məlumatların təsadüfiliyini, klasterlərin sayını və centroidlərin sayını redaktə edə bilərsiniz. Bu, məlumatların necə qruplaşdırıla biləcəyi barədə fikir əldə etməyə kömək edirmi? [Bu kimi](https://user.ceng.metu.edu.tr/~akifakkus/courses/ceng574/k-means/) K-Ortalama Simulyatoruna nəzər salın. Nümunə məlumat nöqtələrini vizuallaşdırmaq və onların mərkəzlərini təyin etmək üçün bu alətdən istifadə edə bilərsiniz. Bundan əlavə, məlumatların təsadüfiliyini, klasterlərin və mərkəzlərin sayını dəyişə bilərsiniz. Bu, məlumatların necə qruplaşdırıla biləcəyi barədə fikir əldə etməyə kömək edirmi?
Həmçinin, Stenforddan [K-Ortalama haqqında olan bu materiala](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html) nəzər salın. Həmçinin, Stenforddan [K-Ortalama haqqında olan bu materiala](https://stanford.edu/~cpiech/cs221/handouts/kmeans.html) nəzər salın.

@ -2,9 +2,9 @@
## Təlimatlar ## Təlimatlar
Bu dərsdə siz K-Ortalama klasterləşməsi haqqında öyrəndiniz. Bəzən K-Ortalama datanız üçün uyğun olmur. Bu dərslərdən və ya başqa yerdən götürdüyünüz datalardan istifadə edərək dəftərçə faylı yaradın (mənbənizi qeyd edin) və K-Ortalama-dan istifadə etmədən fərqli klasterləşdirmə metodunu göstərin. Nə öyrəndiniz? Bu dərsdə siz K-Ortalama klasterləşməsi haqqında öyrəndiniz. Bəzən K-Ortalama datanız üçün uyğun olmur. Bu dərslərdən və ya başqa yerdən götürdüyünüz datalardan istifadə edərək notbuk faylı yaradın (mənbənizi qeyd edin) və K-Ortalama-dan istifadə etmədən fərqli klasterləşdirmə metodunu göstərin. Nə öyrəndiniz?
## Rubrika ## Rubrika
| Meyarlar | Nümunəvi | Adekvat | İnkişaf Etdirilməli Olan | | Meyarlar | Nümunəvi | Adekvat | İnkişaf Etdirilməli Olan |
| -------- | --------------------------------------------------------------- | -------------------------------------------------------------------- | ---------------------------- | | -------- | -------- | ------- | ------------------------ |
| | Dəftərçə yaxşı sənədləşdirilmiş klasterləşdirmə modeli ilə təqdim olunur | Dəftərçə yaxşı sənədləşdirilmə olmadan və/və ya yarımçıq təqdim olunur | Yarımçıq iş təqdim olunub | | | Notbuk yaxşı sənədləşdirilmiş klasterləşdirmə modeli ilə təqdim olunub | Notbuk yaxşı sənədləşdirilmə olmadan və/və ya yarımçıq təqdim olunub | Yarımçıq iş təqdim olunub |

@ -153,7 +153,7 @@ Yuxarıdakı "dayan və düşün" elementlərindən birini seç və onu kodda t
Növbəti dərsdə təbii dilin emalı və maşın öyrənməsi üçün bir neçə yanaşma öyrənəcəksən. Növbəti dərsdə təbii dilin emalı və maşın öyrənməsi üçün bir neçə yanaşma öyrənəcəksən.
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/32/) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/32/)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -58,14 +58,14 @@ Mətn müəyyən uzunluqdakı sözlər ardıcıllığına, tək sözə (uniqram)
Məsələn, n-qram balı 2 olan `the quick red fox jumped over the lazy brown dog` cümləsi aşağıdakı n-qramları əmələ gətirir: Məsələn, n-qram balı 2 olan `the quick red fox jumped over the lazy brown dog` cümləsi aşağıdakı n-qramları əmələ gətirir:
1. the quick 1. the quick
2. quick red 2. quick red
3. red fox 3. red fox
4. fox jumped 4. fox jumped
5. jumped over 5. jumped over
6. over the 6. over the
7. the lazy 7. the lazy
8. lazy brown 8. lazy brown
9. brown dog 9. brown dog
Onları cümlə üzərində sürüşmə qutusu kimi göstərmək daha asan ola bilər. Nümunə 3 sözdən ibarət n-qramlar üçündür və hər cümlədə n-qram qalın şriftlə göstərilmişdir: Onları cümlə üzərində sürüşmə qutusu kimi göstərmək daha asan ola bilər. Nümunə 3 sözdən ibarət n-qramlar üçündür və hər cümlədə n-qram qalın şriftlə göstərilmişdir:
@ -128,13 +128,13 @@ Gəlin bu tip tapşırıqların həlli üçün faydalı API-ləri ehtiva edən T
```python ```python
from textblob import TextBlob from textblob import TextBlob
from textblob.np_extractors import ConllExtractor from textblob.np_extractors import ConllExtractor
# import and create a Conll extractor to use later # import and create a Conll extractor to use later
extractor = ConllExtractor() extractor = ConllExtractor()
# later when you need a noun phrase extractor: # later when you need a noun phrase extractor:
user_input = input("> ") user_input = input("> ")
user_input_blob = TextBlob(user_input, np_extractor=extractor) # note non-default extractor specified user_input_blob = TextBlob(user_input, np_extractor=extractor) # note non-default extractor specified
np = user_input_blob.noun_phrases np = user_input_blob.noun_phrases
``` ```
> Burada nə baş verir? [ConllExtractor](https://textblob.readthedocs.io/en/dev/api_reference.html?highlight=Conll#textblob.en.np_extractors.ConllExtractor) "ConLL-2000 ilə öyrədilmiş yığın təhlilindən istifadə edən isim çıxarıcı öyrətmə korpusudur”. ConLL-2000, 2000-ci ildə Hesabi Təbii Dil Öyrənmə Konfransına işarə edir. Hər il bu konfrans çətin bir NLP problemini həll etmək üçün seminar keçirir. 2000-ci ildə isə bu problem isim parçalanması olmuşdur. Həmin model Wall Street Journal-dakı "15-18-ci bölmələri öyrətmə datası (211727 token) və 20-ci bölməni isə test datası (47377 token)" kimi götürərək hazırlanmışdır. Siz istifadə olunan prosedurlara [burada](https://www.clips.uantwerpen.be/conll2000/chunking/) və nəticələrə [burada](https://ifarm.nl/erikt/research/np-chunking.html) baxa bilərsiniz. > Burada nə baş verir? [ConllExtractor](https://textblob.readthedocs.io/en/dev/api_reference.html?highlight=Conll#textblob.en.np_extractors.ConllExtractor) "ConLL-2000 ilə öyrədilmiş yığın təhlilindən istifadə edən isim çıxarıcı öyrətmə korpusudur”. ConLL-2000, 2000-ci ildə Hesabi Təbii Dil Öyrənmə Konfransına işarə edir. Hər il bu konfrans çətin bir NLP problemini həll etmək üçün seminar keçirir. 2000-ci ildə isə bu problem isim parçalanması olmuşdur. Həmin model Wall Street Journal-dakı "15-18-ci bölmələri öyrətmə datası (211727 token) və 20-ci bölməni isə test datası (47377 token)" kimi götürərək hazırlanmışdır. Siz istifadə olunan prosedurlara [burada](https://www.clips.uantwerpen.be/conll2000/chunking/) və nəticələrə [burada](https://ifarm.nl/erikt/research/np-chunking.html) baxa bilərsiniz.
@ -198,7 +198,7 @@ Tapşırığın mümkün həlli [buradadır](https://github.com/microsoft/ML-For
Əvvəlki bilik yoxlamasındakı tapşırığı götürün və onu həyata keçirməyə çalışın. Botu dostunuz vasitəsilə test edin. Onu aldada bilərmi? Botunuzu daha 'inandırıcı' edə bilərsinizmi? Əvvəlki bilik yoxlamasındakı tapşırığı götürün və onu həyata keçirməyə çalışın. Botu dostunuz vasitəsilə test edin. Onu aldada bilərmi? Botunuzu daha 'inandırıcı' edə bilərsinizmi?
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/34/) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/34/)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -178,7 +178,7 @@ Nümunə [həll](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/3
İstifadəçi məlumatlarından digər xüsusiyyətləri çıxarmaqla Marvin'i daha da yaxşılaşdıra bilərsinizmi? İstifadəçi məlumatlarından digər xüsusiyyətləri çıxarmaqla Marvin'i daha da yaxşılaşdıra bilərsinizmi?
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/36/) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/36/)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -1,6 +1,6 @@
# Otel rəyləri ilə duyğu analizi - datanın emalı # Otel rəyləri ilə duyğu analizi - datanın emalı
Bu bölmədə siz böyük verilənlər toplusunun kəşfiyyat xarakterli məlumat təhlilini aparmaq üçün əvvəlki dərslərdəki üsullardan istifadə edəcəksiniz. Müxtəlif sütunların necə faydalı olduğunu yaxşı başa düşdükdən sonra öyrənəcəksiniz: Bu bölmədə siz böyük verilənlər toplusunun kəşfiyyat xarakterli məlumat təhlilini aparmaq üçün əvvəlki dərslərdəki üsullardan istifadə edəcəksiniz. Müxtəlif sütunların necə faydalı olduğunu yaxşı başa düşdükdən sonra öyrənəcəksiniz:
- lazımsız sütunları necə çıxarmağı - lazımsız sütunları necə çıxarmağı
- mövcud sütunlar əsasında bəzi yeni məlumatları necə hesablamağı - mövcud sütunlar əsasında bəzi yeni məlumatları necə hesablamağı
@ -39,7 +39,7 @@ Data massivdəki başlıqlar aşağıdakı kimidir:
*Hotel_Address, Additional_Number_of_Scoring, Review_Date, Average_Score, Hotel_Name, Reviewer_Nationality, Negative_Review, Review_Total_Negative_Word_Counts, Total_Number_of_Reviews, Positive_Review, Review_Total_Positive_Word_Counts, Total_Number_of_Reviews_Reviewer_Has_Given, Reviewer_Score, Tags, days_since_review, lat, lng* *Hotel_Address, Additional_Number_of_Scoring, Review_Date, Average_Score, Hotel_Name, Reviewer_Nationality, Negative_Review, Review_Total_Negative_Word_Counts, Total_Number_of_Reviews, Positive_Review, Review_Total_Positive_Word_Counts, Total_Number_of_Reviews_Reviewer_Has_Given, Reviewer_Score, Tags, days_since_review, lat, lng*
Burada onlar yoxlanması daha asan ola biləcək şəkildə qruplaşdırılıb: Burada onlar yoxlanması daha asan ola biləcək şəkildə qruplaşdırılıb:
##### Oteli təsvir edən sütunlar ##### Oteli təsvir edən sütunlar
* `Hotel_Name`, `Hotel_Address`, `lat` (en dairəsi), `lng` (uzunluq dairəsi) * `Hotel_Name`, `Hotel_Address`, `lat` (en dairəsi), `lng` (uzunluq dairəsi)
@ -50,7 +50,7 @@ Burada onlar yoxlanması daha asan ola biləcək şəkildə qruplaşdırılıb:
* `Average_Score` * `Average_Score`
* Data massivin yaradıcısına görə, bu sütun *Son bir ildəki ən son şərhə əsasən hesablanmış otelin orta qiymətidir*. Bu üsul qiyməti hesablamaq üçün olan ənənəvi üsullardan olmasa da, datanı birbaşa bu şəkildə əldə etdiyimizə görə biz onu hələlik nominal dəyər kimi qəbul edə bilərik. * Data massivin yaradıcısına görə, bu sütun *Son bir ildəki ən son şərhə əsasən hesablanmış otelin orta qiymətidir*. Bu üsul qiyməti hesablamaq üçün olan ənənəvi üsullardan olmasa da, datanı birbaşa bu şəkildə əldə etdiyimizə görə biz onu hələlik nominal dəyər kimi qəbul edə bilərik.
✅ Bu datadakı digər sütunlara əsaslanaraq, ortalama qiyməti hesablamaq üçün başqa yol düşünə bilərsinizmi? ✅ Bu datadakı digər sütunlara əsaslanaraq, ortalama qiyməti hesablamaq üçün başqa yol düşünə bilərsinizmi?
* `Total_Number_of_Reviews` * `Total_Number_of_Reviews`
@ -100,7 +100,7 @@ Yuxarıda qeyd edildiyi kimi, ilk baxışdan məlumatları kateqoriyalara ayırm
1. Bütün şərtləri vahid standarta dəyişdirməyə cəhd etmək, lakin bu, çox çətindir, çünki bu halda müxtəlif növlər arasında uyğunluq bəlli deyil. (məs. *Classic single room*, *Single room* seçiminə uyğun gəlir, lakin *Superior Queen Room with Courtyard Garden or City View* seçimini standartlaşdırmaq çox daha çətindir) 1. Bütün şərtləri vahid standarta dəyişdirməyə cəhd etmək, lakin bu, çox çətindir, çünki bu halda müxtəlif növlər arasında uyğunluq bəlli deyil. (məs. *Classic single room*, *Single room* seçiminə uyğun gəlir, lakin *Superior Queen Room with Courtyard Garden or City View* seçimini standartlaşdırmaq çox daha çətindir)
2. Biz NLP yanaşması ilə başlaya və *Solo*, *Business Traveller*, ya da *Family with young kids* kimi bəzi ifadələrin istifadə tezliyini ölçə bilər və onları tövsiyyə modelində amil olaraq nəzərə ala bilərik, çünki bunlar bütün otellər üçün uyğundur 2. Biz NLP yanaşması ilə başlaya və *Solo*, *Business Traveller*, ya da *Family with young kids* kimi bəzi ifadələrin istifadə tezliyini ölçə bilər və onları tövsiyyə modelində amil olaraq nəzərə ala bilərik, çünki bunlar bütün otellər üçün uyğundur
Teqlər adətən (lakin həmişə deyil) *Səyahətin növü*, *Qonaqların növü*, *Otaq növü*, *Gecə sayı* və *Rəyin təqdim olunduğu cihazın növü* kimi kateqoriyalara uyğunlaşdırılan 5-6 vergüllə ayrılmış dəyərlərin siyahısından ibarət sahədir. Bununla belə, bəzi rəy sahibləri hər bir sahəni doldurmadığına görə (bəzilərini doldurmaya bilirlər), dəyərlər həmişə eyni ardıcıllıqla olmur. Teqlər adətən (lakin həmişə deyil) *Səyahətin növü*, *Qonaqların növü*, *Otaq növü*, *Gecə sayı* və *Rəyin təqdim olunduğu cihazın növü* kimi kateqoriyalara uyğunlaşdırılan 5-6 vergüllə ayrılmış dəyərlərin siyahısından ibarət sahədir. Bununla belə, bəzi rəy sahibləri hər bir sahəni doldurmadığına görə (bəzilərini doldurmaya bilirlər), dəyərlər həmişə eyni ardıcıllıqla olmur.
@ -112,25 +112,25 @@ Bu o deməkdir ki, teqlər sütunu bizim üçün tamamilə yararsız deyil, laki
Data massiv ilə bağlı bir sıra qəribəliklər və ya uyğunsuzluqlar var ki, mən onları anlaya bilmirəm, lakin modellərinizi qurarkən onlardan xəbərdar olmanız üçün burada təsvir edilmişdir. Əgər başa düşsəniz, zəhmət olmasa müzakirə bölməsində bizə bildirin! Data massiv ilə bağlı bir sıra qəribəliklər və ya uyğunsuzluqlar var ki, mən onları anlaya bilmirəm, lakin modellərinizi qurarkən onlardan xəbərdar olmanız üçün burada təsvir edilmişdir. Əgər başa düşsəniz, zəhmət olmasa müzakirə bölməsində bizə bildirin!
Data massivdə ortalama bal və rəylərin sayı ilə bağlı aşağıdakı sütunlar var: Data massivdə ortalama bal və rəylərin sayı ilə bağlı aşağıdakı sütunlar var:
1. Hotel_Name 1. Hotel_Name
2. Additional_Number_of_Scoring 2. Additional_Number_of_Scoring
3. Average_Score 3. Average_Score
4. Total_Number_of_Reviews 4. Total_Number_of_Reviews
5. Reviewer_Score 5. Reviewer_Score
Bu data massivdə ən çox rəyi olan tək otel 515.000 rəydən 4789 rəylə *Britannia International Hotel Canary Wharf*dır. Amma bu otel üçün `Total_Number_of_Reviews` dəyərinə baxsaq görərik ki, bu 9086-dır. Güman edə bilərsiniz ki, rəyi olmayan çoxlu qiymətləndirmə var, ona görə də bəlkə də `Additional_Number_of_Scoring` sütunundakı dəyəri bu dəyərə əlavə etmək lazımdır. Bu dəyər 2682-dir və onu 4789-a əlavə etməklə 7,471 əldə edirik ki, bu da hələ də `Total_Number_of_Reviews` sütun dəyərindən 1615 azdır. Bu data massivdə ən çox rəyi olan tək otel 515.000 rəydən 4789 rəylə *Britannia International Hotel Canary Wharf*dır. Amma bu otel üçün `Total_Number_of_Reviews` dəyərinə baxsaq görərik ki, bu 9086-dır. Güman edə bilərsiniz ki, rəyi olmayan çoxlu qiymətləndirmə var, ona görə də bəlkə də `Additional_Number_of_Scoring` sütunundakı dəyəri bu dəyərə əlavə etmək lazımdır. Bu dəyər 2682-dir və onu 4789-a əlavə etməklə 7,471 əldə edirik ki, bu da hələ də `Total_Number_of_Reviews` sütun dəyərindən 1615 azdır.
Əgər `Average_Score` sütun dəyərlərinə baxsaq, bunun data massivdəki balların ortalaması olduğunu güman edə bilərsiniz, lakin Kaggle-da verilən təsvir "*Otelin son bir ildəki ən son şərhə əsasən hesablanmış orta balı*" şəklindədir. Bu, o qədər də faydalı görünmür, lakin biz data massivdəki ballara əsaslanaraq öz ortalamamızı hesablaya bilərik. Nümunə olaraq eyni oteldən istifadə edərək, orta otel balı 7,1 kimi verilir, lakin hesablanmış bal (data massivdə rəy sahibinin ortalama qiymətləndirməsi) 6,8-dir. Bu yaxındır, lakin eyni dəyər deyil və biz yalnız təxmin edə bilərik ki, `Additional_Number_of_Scoring` sütununda olan bal dəyərləri ortalama göstəricisini 7.1-ə yüksəldib. Təəssüf ki, bu iddianı sınamaq və ya sübut etmək üçün heç bir yol olmadığından `Average_Score`, `Additional_Number_of_Scoring` və `Total_Number_of_Reviews` sütun dəyərləri bizdə olmayan dataya əsaslandıqda və ya onlara istinad etdikdə onlardan istifadə etmək və ya onların doğruluğuna inanmaq çətindir. Əgər `Average_Score` sütun dəyərlərinə baxsaq, bunun data massivdəki balların ortalaması olduğunu güman edə bilərsiniz, lakin Kaggle-da verilən təsvir "*Otelin son bir ildəki ən son şərhə əsasən hesablanmış orta balı*" şəklindədir. Bu, o qədər də faydalı görünmür, lakin biz data massivdəki ballara əsaslanaraq öz ortalamamızı hesablaya bilərik. Nümunə olaraq eyni oteldən istifadə edərək, orta otel balı 7,1 kimi verilir, lakin hesablanmış bal (data massivdə rəy sahibinin ortalama qiymətləndirməsi) 6,8-dir. Bu yaxındır, lakin eyni dəyər deyil və biz yalnız təxmin edə bilərik ki, `Additional_Number_of_Scoring` sütununda olan bal dəyərləri ortalama göstəricisini 7.1-ə yüksəldib. Təəssüf ki, bu iddianı sınamaq və ya sübut etmək üçün heç bir yol olmadığından `Average_Score`, `Additional_Number_of_Scoring` və `Total_Number_of_Reviews` sütun dəyərləri bizdə olmayan dataya əsaslandıqda və ya onlara istinad etdikdə onlardan istifadə etmək və ya onların doğruluğuna inanmaq çətindir.
Bütün bunların üzərinə, ən çox rəy alan ikinci otelin hesablanmış orta balı 8,12 və data massivdəki `Average_Score` sütun dəyəri isə 8.1-dir. Bu düzgün hesab təsadüfdür yoxsa ilk otel datası doğru deyil? Bütün bunların üzərinə, ən çox rəy alan ikinci otelin hesablanmış orta balı 8,12 və data massivdəki `Average_Score` sütun dəyəri isə 8.1-dir. Bu düzgün hesab təsadüfdür yoxsa ilk otel datası doğru deyil?
Bu otellərin istisna olmaları ehtimalı və bəlkə də dəyərlərin əksəriyyətinin üst-üstə düşməsi (niyəsə bəziləri üst-üstə düşmür) ehtimalı üzərinə data massivdəki dəyərlərin düzgün istifadə edilməsini (və ya edilməməsini) araşdırmaq üçün qısa proqram yazacağıq. Bu otellərin istisna olmaları ehtimalı və bəlkə də dəyərlərin əksəriyyətinin üst-üstə düşməsi (niyəsə bəziləri üst-üstə düşmür) ehtimalı üzərinə data massivdəki dəyərlərin düzgün istifadə edilməsini (və ya edilməməsini) araşdırmaq üçün qısa proqram yazacağıq.
> 🚨 Qeyd > 🚨 Qeyd
> >
> Bu verilənlər toplusu ilə işləyərkən siz mətni özünüz oxumadan və ya təhlil etmədən mətndən nəyisə hesablayan kod yazacaqsınız. NLP-nin mahiyyəti də elə bundan ibarətdir, insandan asılı olmadan məna və ya duyğuları analiz və şərh edir. Bununla belə, bəzi mənfi rəyləri oxumağınız mümkündür. Mən oxumamağınızın tərəfdarıyam, çünki buna məcbur deyilsiniz. Onlardan bəziləri mənasız və ya aidiyyatı olmayan mənfi otel rəyləridir, məsələn, "Hava əla deyildi", hansı ki, oteldən və ya həqiqətən də hər hansı birindən asılı olmadan baş verən bir şeydir. Ancaq bəzi rəylərin qaranlıq tərəfi də var. Bəzən mənfi rəylər irqçi, cinsiyyətçi və ya yaş ilə bağlı ayrı-seçkilik etməyə yönəlib. Bu təəssüf doğurur, lakin ictimai vebsaytdan əldə edilmiş verilənlər bazasında gözləniləndir. Bəzi rəy sahibləri xoşagəlməz, narahat və ya əsəbi hesab edə biləcəyiniz rəylər yazırlar. Kodunuzun duyğu analizi etməsinə icazə vermək, onları özünüz oxuyub üzülməkdən daha yaxşıdır. Bununla belə, belə rəylər azlıq təşkil edir, lakin həmişə mövcud olduğunu bilməkdə fayda var. > Bu verilənlər toplusu ilə işləyərkən siz mətni özünüz oxumadan və ya təhlil etmədən mətndən nəyisə hesablayan kod yazacaqsınız. NLP-nin mahiyyəti də elə bundan ibarətdir, insandan asılı olmadan məna və ya duyğuları analiz və şərh edir. Bununla belə, bəzi mənfi rəyləri oxumağınız mümkündür. Mən oxumamağınızın tərəfdarıyam, çünki buna məcbur deyilsiniz. Onlardan bəziləri mənasız və ya aidiyyatı olmayan mənfi otel rəyləridir, məsələn, "Hava əla deyildi", hansı ki, oteldən və ya həqiqətən də hər hansı birindən asılı olmadan baş verən bir şeydir. Ancaq bəzi rəylərin qaranlıq tərəfi də var. Bəzən mənfi rəylər irqçi, cinsiyyətçi və ya yaş ilə bağlı ayrı-seçkilik etməyə yönəlib. Bu təəssüf doğurur, lakin ictimai vebsaytdan əldə edilmiş verilənlər bazasında gözləniləndir. Bəzi rəy sahibləri xoşagəlməz, narahat və ya əsəbi hesab edə biləcəyiniz rəylər yazırlar. Kodunuzun duyğu analizi etməsinə icazə vermək, onları özünüz oxuyub üzülməkdən daha yaxşıdır. Bununla belə, belə rəylər azlıq təşkil edir, lakin həmişə mövcud olduğunu bilməkdə fayda var.
## Məşğələ - Datanın təhlili ## Məşğələ - Datanın təhlili
### Datanı yükləyin ### Datanı yükləyin
@ -158,7 +158,7 @@ Artıq data yükləndiyinə görə biz onun üzərində bəzi əməliyyatları y
## Datanı təhlil edin ## Datanı təhlil edin
Artıq data *təmizdir*, bu isə o deməkdir ki, data onunla işlənilməyə hazırdır və yalnız ingilis simvollarını gözləyən alqoritmləri poza biləcək başqa simvollar yoxdur. Artıq data *təmizdir*, bu isə o deməkdir ki, data onunla işlənilməyə hazırdır və yalnız ingilis simvollarını gözləyən alqoritmləri poza biləcək başqa simvollar yoxdur.
✅ NLP üsullarını tətbiq etməzdən əvvəl onu formatlaşdırmaq üçün bəzi ilkin emal tələb edən data ilə işləməli ola bilərdiniz, lakin bu dəfə buna ehtiyac yoxdur. Əgər olsaydı, ingiliscədə istifadə olunmayan simvolların öhdəsindən necə gələrdiniz? ✅ NLP üsullarını tətbiq etməzdən əvvəl onu formatlaşdırmaq üçün bəzi ilkin emal tələb edən data ilə işləməli ola bilərdiniz, lakin bu dəfə buna ehtiyac yoxdur. Əgər olsaydı, ingiliscədə istifadə olunmayan simvolların öhdəsindən necə gələrdiniz?
@ -170,7 +170,7 @@ Bu dərsdəki ilk tapşırıq datafreymi (dəyişdirmədən) yoxlayan kod yazara
> Bir çox proqramlaşdırma tapşırıqları kimi, bu tapşırığı da başa çatdırmağın bir neçə yolu var, lakin məsləhət odur ki, bunu edə biləcəyiniz ən sadə, ən asan şəkildə edəsiniz, çünki gələcəkdə bu koda qayıtdığınız zaman onu başa düşmək daha asan olacaq. Bu istədiyinizə bir çox hallarda səmərəli şəkildə nail olmağınıza kömək ola biləcək datafreym üçün olan API-lar var. > Bir çox proqramlaşdırma tapşırıqları kimi, bu tapşırığı da başa çatdırmağın bir neçə yolu var, lakin məsləhət odur ki, bunu edə biləcəyiniz ən sadə, ən asan şəkildə edəsiniz, çünki gələcəkdə bu koda qayıtdığınız zaman onu başa düşmək daha asan olacaq. Bu istədiyinizə bir çox hallarda səmərəli şəkildə nail olmağınıza kömək ola biləcək datafreym üçün olan API-lar var.
Aşağıdakı suallara kodlaşdırma tapşırıqları kimi baxın və həllinə baxmadan onlara cavab verməyə çalışın. Aşağıdakı suallara kodlaşdırma tapşırıqları kimi baxın və həllinə baxmadan onlara cavab verməyə çalışın.
1. İndicə yüklədiyiniz datafreymin *formasını* çap edin (burada forma deyəndə sətir və sütunların sayı nəzərdə tutulur) 1. İndicə yüklədiyiniz datafreymin *formasını* çap edin (burada forma deyəndə sətir və sütunların sayı nəzərdə tutulur)
2. Müxtəlif milliyətlərdən olan rəy sahibləri üçün tezliyi hesablayın: 2. Müxtəlif milliyətlərdən olan rəy sahibləri üçün tezliyi hesablayın:
@ -182,7 +182,7 @@ Aşağıdakı suallara kodlaşdırma tapşırıqları kimi baxın və həllinə
5. Baxmayaraq ki, data massivdə hər bir otel üçün `Average_Score` sütunu var, siz də ortalama balı hesablaya bilərsiniz (bunun üçün hər bir otelin data massivdəki rəy qiymətləndirmələrinin ortalamasını hesablamaq lazımdır). Datafreymə `Calc_Average_Score` başlıqlı və hesablanmış ortalamanı göstərən yeni sütun əlavə edin. 5. Baxmayaraq ki, data massivdə hər bir otel üçün `Average_Score` sütunu var, siz də ortalama balı hesablaya bilərsiniz (bunun üçün hər bir otelin data massivdəki rəy qiymətləndirmələrinin ortalamasını hesablamaq lazımdır). Datafreymə `Calc_Average_Score` başlıqlı və hesablanmış ortalamanı göstərən yeni sütun əlavə edin.
6. Hansısa otelin eyni `Average_Score` və `Calc_Average_Score` (kəsr hissəsi onluqlara yuvarlaqlaşdırılmış) dəyəri varmı? 6. Hansısa otelin eyni `Average_Score` və `Calc_Average_Score` (kəsr hissəsi onluqlara yuvarlaqlaşdırılmış) dəyəri varmı?
1. Giriş olaraq sətir götürən və dəyərləri müqayisə edən bir Python funksiyası yazmağa çalışın və dəyərlər eyni olmadıqda mesaj çağ edin. Daha sonra isə `.apply()` funksiyasını istifadə edərək yazdığınız funksiyanı digər sətirlərə də tətbiq edin. 1. Giriş olaraq sətir götürən və dəyərləri müqayisə edən bir Python funksiyası yazmağa çalışın və dəyərlər eyni olmadıqda mesaj çağ edin. Daha sonra isə `.apply()` funksiyasını istifadə edərək yazdığınız funksiyanı digər sətirlərə də tətbiq edin.
7. `Negative_Review` sütununda neçə sətrin "No Negative" dəyəri olduğunu hesablayın və nəticəni çap edin 7. `Negative_Review` sütununda neçə sətrin "No Negative" dəyəri olduğunu hesablayın və nəticəni çap edin
8. `Positive_Review` sütununda neçə sətrin "No Positive" dəyəri olduğunu hesablayın və nəticəni çap edin 8. `Positive_Review` sütununda neçə sətrin "No Positive" dəyəri olduğunu hesablayın və nəticəni çap edin
9. Neçə sətrin `Positive_Review` sütun və "No Positive" dəyəri, **və** neçəsinin `Negative_Review` sütun və "No Negative" dəyəri olduğunu hesablayın və nəticəni çap edin 9. Neçə sətrin `Positive_Review` sütun və "No Positive" dəyəri, **və** neçəsinin `Negative_Review` sütun və "No Negative" dəyəri olduğunu hesablayın və nəticəni çap edin
### Kodlaşdırma tapşırıqlarına cavablar ### Kodlaşdırma tapşırıqlarına cavablar
@ -204,15 +204,15 @@ Aşağıdakı suallara kodlaşdırma tapşırıqları kimi baxın və həllinə
nationality_freq = df["Reviewer_Nationality"].value_counts() nationality_freq = df["Reviewer_Nationality"].value_counts()
print("There are " + str(nationality_freq.size) + " different nationalities") print("There are " + str(nationality_freq.size) + " different nationalities")
# print first and last rows of the Series. Change to nationality_freq.to_string() to print all of the data # print first and last rows of the Series. Change to nationality_freq.to_string() to print all of the data
print(nationality_freq) print(nationality_freq)
There are 227 different nationalities There are 227 different nationalities
United Kingdom 245246 United Kingdom 245246
United States of America 35437 United States of America 35437
Australia 21686 Australia 21686
Ireland 14827 Ireland 14827
United Arab Emirates 10235 United Arab Emirates 10235
... ...
Comoros 1 Comoros 1
Palau 1 Palau 1
Northern Mariana Islands 1 Northern Mariana Islands 1
@ -229,7 +229,7 @@ Aşağıdakı suallara kodlaşdırma tapşırıqları kimi baxın və həllinə
# What is the top 10 most common nationalities and their frequencies? # What is the top 10 most common nationalities and their frequencies?
print("The next 10 highest frequency reviewer nationalities are:") print("The next 10 highest frequency reviewer nationalities are:")
print(nationality_freq[1:11].to_string()) print(nationality_freq[1:11].to_string())
The highest frequency reviewer nationality is United Kingdom with 245246 reviews. The highest frequency reviewer nationality is United Kingdom with 245246 reviews.
The next 10 highest frequency reviewer nationalities are: The next 10 highest frequency reviewer nationalities are:
United States of America 35437 United States of America 35437
@ -251,11 +251,11 @@ Aşağıdakı suallara kodlaşdırma tapşırıqları kimi baxın və həllinə
# Normally with pandas you will avoid an explicit loop, but wanted to show creating a new dataframe using criteria (don't do this with large amounts of data because it could be very slow) # Normally with pandas you will avoid an explicit loop, but wanted to show creating a new dataframe using criteria (don't do this with large amounts of data because it could be very slow)
for nat in nationality_freq[:10].index: for nat in nationality_freq[:10].index:
# First, extract all the rows that match the criteria into a new dataframe # First, extract all the rows that match the criteria into a new dataframe
nat_df = df[df["Reviewer_Nationality"] == nat] nat_df = df[df["Reviewer_Nationality"] == nat]
# Now get the hotel freq # Now get the hotel freq
freq = nat_df["Hotel_Name"].value_counts() freq = nat_df["Hotel_Name"].value_counts()
print("The most reviewed hotel for " + str(nat).strip() + " was " + str(freq.index[0]) + " with " + str(freq[0]) + " reviews.") print("The most reviewed hotel for " + str(nat).strip() + " was " + str(freq.index[0]) + " with " + str(freq[0]) + " reviews.")
The most reviewed hotel for United Kingdom was Britannia International Hotel Canary Wharf with 3833 reviews. The most reviewed hotel for United Kingdom was Britannia International Hotel Canary Wharf with 3833 reviews.
The most reviewed hotel for United States of America was Hotel Esther a with 423 reviews. The most reviewed hotel for United States of America was Hotel Esther a with 423 reviews.
The most reviewed hotel for Australia was Park Plaza Westminster Bridge London with 167 reviews. The most reviewed hotel for Australia was Park Plaza Westminster Bridge London with 167 reviews.
@ -273,13 +273,13 @@ Aşağıdakı suallara kodlaşdırma tapşırıqları kimi baxın və həllinə
```python ```python
# First create a new dataframe based on the old one, removing the uneeded columns # First create a new dataframe based on the old one, removing the uneeded columns
hotel_freq_df = df.drop(["Hotel_Address", "Additional_Number_of_Scoring", "Review_Date", "Average_Score", "Reviewer_Nationality", "Negative_Review", "Review_Total_Negative_Word_Counts", "Positive_Review", "Review_Total_Positive_Word_Counts", "Total_Number_of_Reviews_Reviewer_Has_Given", "Reviewer_Score", "Tags", "days_since_review", "lat", "lng"], axis = 1) hotel_freq_df = df.drop(["Hotel_Address", "Additional_Number_of_Scoring", "Review_Date", "Average_Score", "Reviewer_Nationality", "Negative_Review", "Review_Total_Negative_Word_Counts", "Positive_Review", "Review_Total_Positive_Word_Counts", "Total_Number_of_Reviews_Reviewer_Has_Given", "Reviewer_Score", "Tags", "days_since_review", "lat", "lng"], axis = 1)
# Group the rows by Hotel_Name, count them and put the result in a new column Total_Reviews_Found # Group the rows by Hotel_Name, count them and put the result in a new column Total_Reviews_Found
hotel_freq_df['Total_Reviews_Found'] = hotel_freq_df.groupby('Hotel_Name').transform('count') hotel_freq_df['Total_Reviews_Found'] = hotel_freq_df.groupby('Hotel_Name').transform('count')
# Get rid of all the duplicated rows # Get rid of all the duplicated rows
hotel_freq_df = hotel_freq_df.drop_duplicates(subset = ["Hotel_Name"]) hotel_freq_df = hotel_freq_df.drop_duplicates(subset = ["Hotel_Name"])
display(hotel_freq_df) display(hotel_freq_df)
``` ```
| Hotel_Name | Total_Number_of_Reviews | Total_Reviews_Found | | Hotel_Name | Total_Number_of_Reviews | Total_Reviews_Found |
| :----------------------------------------: | :---------------------: | :-----------------: | | :----------------------------------------: | :---------------------: | :-----------------: |
@ -290,7 +290,7 @@ Aşağıdakı suallara kodlaşdırma tapşırıqları kimi baxın və həllinə
| Mercure Paris Porte d Orleans | 110 | 10 | | Mercure Paris Porte d Orleans | 110 | 10 |
| Hotel Wagner | 135 | 10 | | Hotel Wagner | 135 | 10 |
| Hotel Gallitzinberg | 173 | 8 | | Hotel Gallitzinberg | 173 | 8 |
`Total_Number_of_Reviews` sütunundakı dəyərlərin *data massivdə tapılan* nəticələr ilə uyğunlaşmadığını görə bilərsiniz. Bizə məlum deyil ki, bu dəyər otelə aid olan bütün rəylərin sayını göstərir (lakin bütün rəylər saytdan əldə edilməmişdir), ya da başqa hesablamanın nəticəsidir. Bu qeyri-müəyyənliyə görə `Total_Number_of_Reviews` sütunu modeldə istifadə edilməmişdir. `Total_Number_of_Reviews` sütunundakı dəyərlərin *data massivdə tapılan* nəticələr ilə uyğunlaşmadığını görə bilərsiniz. Bizə məlum deyil ki, bu dəyər otelə aid olan bütün rəylərin sayını göstərir (lakin bütün rəylər saytdan əldə edilməmişdir), ya da başqa hesablamanın nəticəsidir. Bu qeyri-müəyyənliyə görə `Total_Number_of_Reviews` sütunu modeldə istifadə edilməmişdir.
5. Baxmayaraq ki, data massivdə hər bir otel üçün `Average_Score` sütunu var, siz də ortalama balı hesablaya bilərsiniz (bunun üçün hər bir otelin data massivdəki rəy qiymətləndirmələrinin ortalamasını hesablamaq lazımdır). Datafreymə `Calc_Average_Score` başlıqlı və hesablanmış ortalamanı göstərən yeni sütun əlavə edin. `Hotel_Name`, `Average_Score` və `Calc_Average_Score` sütunlarını çap edin. 5. Baxmayaraq ki, data massivdə hər bir otel üçün `Average_Score` sütunu var, siz də ortalama balı hesablaya bilərsiniz (bunun üçün hər bir otelin data massivdəki rəy qiymətləndirmələrinin ortalamasını hesablamaq lazımdır). Datafreymə `Calc_Average_Score` başlıqlı və hesablanmış ortalamanı göstərən yeni sütun əlavə edin. `Hotel_Name`, `Average_Score` və `Calc_Average_Score` sütunlarını çap edin.
@ -299,19 +299,19 @@ Aşağıdakı suallara kodlaşdırma tapşırıqları kimi baxın və həllinə
# define a function that takes a row and performs some calculation with it # define a function that takes a row and performs some calculation with it
def get_difference_review_avg(row): def get_difference_review_avg(row):
return row["Average_Score"] - row["Calc_Average_Score"] return row["Average_Score"] - row["Calc_Average_Score"]
# 'mean' is mathematical word for 'average' # 'mean' is mathematical word for 'average'
df['Calc_Average_Score'] = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1) df['Calc_Average_Score'] = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1)
# Add a new column with the difference between the two average scores # Add a new column with the difference between the two average scores
df["Average_Score_Difference"] = df.apply(get_difference_review_avg, axis = 1) df["Average_Score_Difference"] = df.apply(get_difference_review_avg, axis = 1)
# Create a df without all the duplicates of Hotel_Name (so only 1 row per hotel) # Create a df without all the duplicates of Hotel_Name (so only 1 row per hotel)
review_scores_df = df.drop_duplicates(subset = ["Hotel_Name"]) review_scores_df = df.drop_duplicates(subset = ["Hotel_Name"])
# Sort the dataframe to find the lowest and highest average score difference # Sort the dataframe to find the lowest and highest average score difference
review_scores_df = review_scores_df.sort_values(by=["Average_Score_Difference"]) review_scores_df = review_scores_df.sort_values(by=["Average_Score_Difference"])
display(review_scores_df[["Average_Score_Difference", "Average_Score", "Calc_Average_Score", "Hotel_Name"]]) display(review_scores_df[["Average_Score_Difference", "Average_Score", "Calc_Average_Score", "Hotel_Name"]])
``` ```
@ -333,7 +333,7 @@ Aşağıdakı suallara kodlaşdırma tapşırıqları kimi baxın və həllinə
Sadəcə bir oteldə bu fərq 1-dən böyük olduğundan fərqi nəzərə almayıb hesablanmış ortalama qiymətləndirməni istifadə edə bilərik. Sadəcə bir oteldə bu fərq 1-dən böyük olduğundan fərqi nəzərə almayıb hesablanmış ortalama qiymətləndirməni istifadə edə bilərik.
6. `Negative_Review` sütununda neçə sətrin "No Negative" dəyəri olduğunu hesablayın və nəticəni çap edin 6. `Negative_Review` sütununda neçə sətrin "No Negative" dəyəri olduğunu hesablayın və nəticəni çap edin
7. `Positive_Review` sütununda neçə sətrin "No Positive" dəyəri olduğunu hesablayın və nəticəni çap edin 7. `Positive_Review` sütununda neçə sətrin "No Positive" dəyəri olduğunu hesablayın və nəticəni çap edin
@ -344,15 +344,15 @@ Aşağıdakı suallara kodlaşdırma tapşırıqları kimi baxın və həllinə
start = time.time() start = time.time()
no_negative_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" else False , axis=1) no_negative_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" else False , axis=1)
print("Number of No Negative reviews: " + str(len(no_negative_reviews[no_negative_reviews == True].index))) print("Number of No Negative reviews: " + str(len(no_negative_reviews[no_negative_reviews == True].index)))
no_positive_reviews = df.apply(lambda x: True if x['Positive_Review'] == "No Positive" else False , axis=1) no_positive_reviews = df.apply(lambda x: True if x['Positive_Review'] == "No Positive" else False , axis=1)
print("Number of No Positive reviews: " + str(len(no_positive_reviews[no_positive_reviews == True].index))) print("Number of No Positive reviews: " + str(len(no_positive_reviews[no_positive_reviews == True].index)))
both_no_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" and x['Positive_Review'] == "No Positive" else False , axis=1) both_no_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" and x['Positive_Review'] == "No Positive" else False , axis=1)
print("Number of both No Negative and No Positive reviews: " + str(len(both_no_reviews[both_no_reviews == True].index))) print("Number of both No Negative and No Positive reviews: " + str(len(both_no_reviews[both_no_reviews == True].index)))
end = time.time() end = time.time()
print("Lambdas took " + str(round(end - start, 2)) + " seconds") print("Lambdas took " + str(round(end - start, 2)) + " seconds")
Number of No Negative reviews: 127890 Number of No Negative reviews: 127890
Number of No Positive reviews: 35946 Number of No Positive reviews: 35946
Number of both No Negative and No Positive reviews: 127 Number of both No Negative and No Positive reviews: 127
@ -368,16 +368,16 @@ Digər bir üsul Lambdas istifadə etmədən sözügedən dəyərləri saymaq v
start = time.time() start = time.time()
no_negative_reviews = sum(df.Negative_Review == "No Negative") no_negative_reviews = sum(df.Negative_Review == "No Negative")
print("Number of No Negative reviews: " + str(no_negative_reviews)) print("Number of No Negative reviews: " + str(no_negative_reviews))
no_positive_reviews = sum(df["Positive_Review"] == "No Positive") no_positive_reviews = sum(df["Positive_Review"] == "No Positive")
print("Number of No Positive reviews: " + str(no_positive_reviews)) print("Number of No Positive reviews: " + str(no_positive_reviews))
both_no_reviews = sum((df.Negative_Review == "No Negative") & (df.Positive_Review == "No Positive")) both_no_reviews = sum((df.Negative_Review == "No Negative") & (df.Positive_Review == "No Positive"))
print("Number of both No Negative and No Positive reviews: " + str(both_no_reviews)) print("Number of both No Negative and No Positive reviews: " + str(both_no_reviews))
end = time.time() end = time.time()
print("Sum took " + str(round(end - start, 2)) + " seconds") print("Sum took " + str(round(end - start, 2)) + " seconds")
Number of No Negative reviews: 127890 Number of No Negative reviews: 127890
Number of No Positive reviews: 35946 Number of No Positive reviews: 35946
Number of both No Negative and No Positive reviews: 127 Number of both No Negative and No Positive reviews: 127
@ -393,12 +393,12 @@ Data massivin təhlilini bitirdiyinizə görə artıq növbəti dərsdə datanı
Bu dərs, əvvəlki dərslərdə də gördüyümüz kimi, data üzərində əməliyyatlar etməzdən əvvəl onu və onun çatışmazlıqlarını başa düşməyin nə qədər vacib olduğunu nümayiş etdirir. Xüsusilə də mətnə əsaslanan data diqqətlə araşdırılır. Müxtəlif mətn ağırlıqlı data massivləri araşdırın və modeldə qərəzli və ya başqa istiqamətə yönəldən duyğu yarada biləcək hissələri aşkar edə bilib-bilmədiyinizə baxın. Bu dərs, əvvəlki dərslərdə də gördüyümüz kimi, data üzərində əməliyyatlar etməzdən əvvəl onu və onun çatışmazlıqlarını başa düşməyin nə qədər vacib olduğunu nümayiş etdirir. Xüsusilə də mətnə əsaslanan data diqqətlə araşdırılır. Müxtəlif mətn ağırlıqlı data massivləri araşdırın və modeldə qərəzli və ya başqa istiqamətə yönəldən duyğu yarada biləcək hissələri aşkar edə bilib-bilmədiyinizə baxın.
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/38/) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/38/)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin
Nitq və mətn ağırlıqlı modellər yaradarkən müxtəlif alətlərlə tanış olmaq üçün [NLP üzrə olan bu təlim toplusunu](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott) sınayın. Nitq və mətn ağırlıqlı modellər yaradarkən müxtəlif alətlərlə tanış olmaq üçün [NLP üzrə olan bu təlim toplusunu](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott) sınayın.
## Tapşırıq ## Tapşırıq
[NLTK](assignment.az.md) [NLTK](assignment.az.md)

@ -174,7 +174,7 @@ Növbəti dərsdə bəzi proqnozlar yaratmaq üçün ARIMA modeli yaradacaqsın
Zaman seriyalarının proqnozlaşdırılmasından faydalanacağını düşünə biləcəyiniz bütün sənaye və araşdırma sahələrinin siyahısını tərtib edin. Bu texnikaların incəsənətdə tətbiqi barədə düşünə bilərsinizmi? Ekonometrikada? Ekologiya? Pərakəndə satış? Sənaye? Maliyyə? Başqa harada? Zaman seriyalarının proqnozlaşdırılmasından faydalanacağını düşünə biləcəyiniz bütün sənaye və araşdırma sahələrinin siyahısını tərtib edin. Bu texnikaların incəsənətdə tətbiqi barədə düşünə bilərsinizmi? Ekonometrikada? Ekologiya? Pərakəndə satış? Sənaye? Maliyyə? Başqa harada?
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/42/) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/42/)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -383,7 +383,7 @@ Bütün proqnozlar üzərində ortalama mütləq faiz xətasını (MAPE) tapmaql
Zaman Seriyası Modelinin düzgünlüyünü yoxlamaq yollarını araşdırın. Bu dərsdə MAPE-ə toxunacağıq, amma istifadə edə biləcəyiniz başqa üsullar varmı? Onları araşdırın və şərh edin. Yardımçı sənədi [burada] tapa bilərsiniz(https://otexts.com/fpp2/accuracy.html) Zaman Seriyası Modelinin düzgünlüyünü yoxlamaq yollarını araşdırın. Bu dərsdə MAPE-ə toxunacağıq, amma istifadə edə biləcəyiniz başqa üsullar varmı? Onları araşdırın və şərh edin. Yardımçı sənədi [burada] tapa bilərsiniz(https://otexts.com/fpp2/accuracy.html)
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/44/) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/44/)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -368,7 +368,7 @@ MAPE: 2.0572089029888656 %
- Model üçün fərqli kernel funksiyaları yoxla və onların dataset üzərində performanslarını analiz et. [Bu sənəd]((https://scikit-learn.org/stable/modules/svm.html#kernel-functions)) çox faydalı ola bilər. - Model üçün fərqli kernel funksiyaları yoxla və onların dataset üzərində performanslarını analiz et. [Bu sənəd]((https://scikit-learn.org/stable/modules/svm.html#kernel-functions)) çox faydalı ola bilər.
- `timesteps` üçün fərqli dəyərlər yoxla və modelin proqnozlarına diqqət et. - `timesteps` üçün fərqli dəyərlər yoxla və modelin proqnozlarına diqqət et.
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/52/) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/52/)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -78,16 +78,16 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
Gəlin əvvəlcə təsadüfi gediş strategiyasını həyata keçirərək problemimizi həll edək. Təsadüfi gedişlə, almaya çatana qədər icazə verilən addımlar arasından növbəti addımımızı təsadüfi seçəcəyik (3. kod bloku). Gəlin əvvəlcə təsadüfi gediş strategiyasını həyata keçirərək problemimizi həll edək. Təsadüfi gedişlə, almaya çatana qədər icazə verilən addımlar arasından növbəti addımımızı təsadüfi seçəcəyik (3. kod bloku).
1. Aşağıdakı kodla təsadüfi gedişi həyata keçirin: 1. Aşağıdakı kodla təsadüfi gedişi həyata keçirin:
```python ```python
def random_policy(m): def random_policy(m):
return random.choice(list(actions)) return random.choice(list(actions))
def walk(m,policy,start_position=None): def walk(m,policy,start_position=None):
n = 0 # number of steps n = 0 # number of steps
# set initial position # set initial position
if start_position: if start_position:
m.human = start_position m.human = start_position
else: else:
m.random_start() m.random_start()
while True: while True:
@ -102,7 +102,7 @@ Gəlin əvvəlcə təsadüfi gediş strategiyasını həyata keçirərək proble
m.move(a) # do the actual move m.move(a) # do the actual move
break break
n+=1 n+=1
walk(m,random_policy) walk(m,random_policy)
``` ```
`walk` müvafiq yolun uzunluğunu qaytarmalıdır. Amma təsadüfi olduğu üçün hər çağrılma zamanı fərqli uzunluq qaytara bilər. `walk` müvafiq yolun uzunluğunu qaytarmalıdır. Amma təsadüfi olduğu üçün hər çağrılma zamanı fərqli uzunluq qaytara bilər.
@ -120,7 +120,7 @@ Gəlin əvvəlcə təsadüfi gediş strategiyasını həyata keçirərək proble
s += z s += z
n += 1 n += 1
print(f"Average path length = {s/n}, eaten by wolf: {w} times") print(f"Average path length = {s/n}, eaten by wolf: {w} times")
print_statistics(random_policy) print_statistics(random_policy)
``` ```
@ -231,10 +231,10 @@ Beləliklə, ən yaxşı yanaşma kəşfiyyat və istifadə arasında balansı q
```python ```python
for epoch in range(5000): for epoch in range(5000):
# Pick initial point # Pick initial point
m.random_start() m.random_start()
# Start travelling # Start travelling
n=0 n=0
cum_reward = 0 cum_reward = 0
@ -314,7 +314,7 @@ Qeyd etdiyimiz kimi, təlim prosesi problem məkanının strukturu haqqında əl
Ümumiyyətlə, yadda saxlamaq lazımdır ki, təlim prosesinin uğuru və keyfiyyəti öyrənmə sürəti, öyrənmə sürətinin azalması və endirim faktoru kimi parametrlərdən əhəmiyyətli dərəcədə asılıdır. Təlim zamanı optimallaşdırdığımız(məsələn, Q-Cədvəl əmsalları) **parametrlərdən** fərqləndirmək üçün onları tez-tez **hiperparametrlər** adlandırırlar. Ən yaxşı hiperparametr dəyərlərinin tapılması prosesi **hiperparametrlərin optimallaşdırılması** adlanır və bu, ayrıca mövzu səviyyəsindədir. Ümumiyyətlə, yadda saxlamaq lazımdır ki, təlim prosesinin uğuru və keyfiyyəti öyrənmə sürəti, öyrənmə sürətinin azalması və endirim faktoru kimi parametrlərdən əhəmiyyətli dərəcədə asılıdır. Təlim zamanı optimallaşdırdığımız(məsələn, Q-Cədvəl əmsalları) **parametrlərdən** fərqləndirmək üçün onları tez-tez **hiperparametrlər** adlandırırlar. Ən yaxşı hiperparametr dəyərlərinin tapılması prosesi **hiperparametrlərin optimallaşdırılması** adlanır və bu, ayrıca mövzu səviyyəsindədir.
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/46/) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/46/)
## Tapşırıq ## Tapşırıq
[Daha Real Dünya](assignment.az.md) [Daha Real Dünya](assignment.az.md)

@ -32,7 +32,7 @@ Bu dərsdə biz müxtəlif **mühitləri** simulyasiya etmək üçün **OpenAI G
```python ```python
import sys import sys
!{sys.executable} -m pip install gym !{sys.executable} -m pip install gym
import gym import gym
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
@ -65,7 +65,7 @@ Kartpol balans problemi ilə işləmək üçün müvafiq mühiti işə salmalıy
```python ```python
env.reset() env.reset()
for i in range(100): for i in range(100):
env.render() env.render()
env.step(env.action_space.sample()) env.step(env.action_space.sample())
@ -80,7 +80,7 @@ Kartpol balans problemi ilə işləmək üçün müvafiq mühiti işə salmalıy
```python ```python
env.reset() env.reset()
done = False done = False
while not done: while not done:
env.render() env.render()
@ -143,13 +143,13 @@ Nümunəmizdə ikinci yanaşma ilə gedəcəyik. Beləliklə müşahidə edəcə
```python ```python
def create_bins(i,num): def create_bins(i,num):
return np.arange(num+1)*(i[1]-i[0])/num+i[0] return np.arange(num+1)*(i[1]-i[0])/num+i[0]
print("Sample bins for interval (-5,5) with 10 bins\n",create_bins((-5,5),10)) print("Sample bins for interval (-5,5) with 10 bins\n",create_bins((-5,5),10))
ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # intervals of values for each parameter ints = [(-5,5),(-2,2),(-0.5,0.5),(-2,2)] # intervals of values for each parameter
nbins = [20,20,10,10] # number of bins for each parameter nbins = [20,20,10,10] # number of bins for each parameter
bins = [create_bins(ints[i],nbins[i]) for i in range(4)] bins = [create_bins(ints[i],nbins[i]) for i in range(4)]
def discretize_bins(x): def discretize_bins(x):
return tuple(np.digitize(x[i],bins[i]) for i in range(4)) return tuple(np.digitize(x[i],bins[i]) for i in range(4))
``` ```
@ -160,7 +160,7 @@ Nümunəmizdə ikinci yanaşma ilə gedəcəyik. Beləliklə müşahidə edəcə
```python ```python
env.reset() env.reset()
done = False done = False
while not done: while not done:
#env.render() #env.render()
@ -183,7 +183,7 @@ Lakin bəzən müşahidə məkanının dəqiq ölçüləri məlum olmur. `discre
```python ```python
Q = {} Q = {}
actions = (0,1) actions = (0,1)
def qvalues(state): def qvalues(state):
return [Q.get((state,a),0) for a in actions] return [Q.get((state,a),0) for a in actions]
``` ```
@ -226,7 +226,7 @@ Biz həmçinin əvvəlki dərsdən olan alqoritmimizi iki formada təkmilləşdi
v = v-v.min()+eps v = v-v.min()+eps
v = v/v.sum() v = v/v.sum()
return v return v
Qmax = 0 Qmax = 0
cum_rewards = [] cum_rewards = []
rewards = [] rewards = []
@ -244,7 +244,7 @@ Biz həmçinin əvvəlki dərsdən olan alqoritmimizi iki formada təkmilləşdi
else: else:
# exploration - randomly chose the action # exploration - randomly chose the action
a = np.random.randint(env.action_space.n) a = np.random.randint(env.action_space.n)
obs, rew, done, info = env.step(a) obs, rew, done, info = env.step(a)
cum_reward+=rew cum_reward+=rew
ns = discretize(obs) ns = discretize(obs)
@ -329,7 +329,7 @@ Bu kimi bir şey görməlisən:
> **Tapşırıq 4**: Burada hər addımda ən yaxşı hərəkəti seçmirdik. Bunun əksinə müvafiq ehtimal paylanması ilə nümunə götürürdük. Ən yüksək Q-Cədvəl dəyəri olan ən yaxşı hərəkəti həmişə seçmək daha düzgün olmazdımı? Bu, Q-Cədvəlinin dəyərinə uyğun hərəkət nömrəsini tapmaq üçün `np.argmax` funksiyasından istifadə etməklə edilə bilər. Həmin strategiyanı icra edin və tarazlanmanın yaxşılaşdığını izləyin. > **Tapşırıq 4**: Burada hər addımda ən yaxşı hərəkəti seçmirdik. Bunun əksinə müvafiq ehtimal paylanması ilə nümunə götürürdük. Ən yüksək Q-Cədvəl dəyəri olan ən yaxşı hərəkəti həmişə seçmək daha düzgün olmazdımı? Bu, Q-Cədvəlinin dəyərinə uyğun hərəkət nömrəsini tapmaq üçün `np.argmax` funksiyasından istifadə etməklə edilə bilər. Həmin strategiyanı icra edin və tarazlanmanın yaxşılaşdığını izləyin.
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/uiz/48/) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/uiz/48/)
## Tapşırıq ## Tapşırıq
[Dağ maşınını öyrədin](assignment.az.md) [Dağ maşınını öyrədin](assignment.az.md)

@ -135,7 +135,7 @@ Marketingin ən effektiv strategiyası müştəriləri fərqli qruplar halında
Bu kurikulumda öyrəndiyin texnikaların istifadə oluna biləcəyi başqa bir sahəni tap və ML-in necə istifadə olunmasını araşdır. Bu kurikulumda öyrəndiyin texnikaların istifadə oluna biləcəyi başqa bir sahəni tap və ML-in necə istifadə olunmasını araşdır.
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/50/) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/50/)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -142,7 +142,7 @@ Statistik və data ayr-seçkiliyinin qarşısını almaq üçün biz ilk növbə
Model yaradılmasında ədalətsizliyin aşkar olduğu və istidadə olunduğu real həyat ssenariləri barədə düşün. Biz başqa nələri nəzərə almalıyıq? Model yaradılmasında ədalətsizliyin aşkar olduğu və istidadə olunduğu real həyat ssenariləri barədə düşün. Biz başqa nələri nəzərə almalıyıq?
## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/6/) ## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/6/)
## Təkrarlayın və özünüz öyrənin ## Təkrarlayın və özünüz öyrənin

@ -82,7 +82,7 @@ Məzmunun layihələrə uyğun olmasını təmin etməklə proses tələbələr
- məşğələ - məşğələ
- əlavə oxu - əlavə oxu
- tapşırıq - tapşırıq
- mühazirə sonrası quiz - Mühazirə sonrası test
> **Dillər haqqında qeyd**: Bu dərslər əsasən Python dilində yazılsalar da, bir çoxları R dilində də mövcuddurlar. R dilində olan dərsləri etmək üçün `/solution` qovluğuna keçməyiniz və R dərslərini axtarmağınız lazımdır. Onlara **R Markdown** faylını təmsil edən .rmd genişləndirilməsi daxildir. Bu tip fayllara, `Markdown sənədində` `kod parçaları`(R və ya digər dillərin) və `YAML başlığının`(çıxışın, məsələn PDF-in formatını müəyyən edir) birləşməsi baxa bilərik. Kodunuzu, onun nəticəsini və fikirlərinizi Markdown formatında yazmağa və bütün bunları bir arada etməyə imkan verdiyinə görə, o, data elmi üçün nümunəvi sənədləşdirmə aləti hesab olunur. Bundan əlavə, R Markdown sənədləri PDF, HTML və ya Word kimi çıxış formatlarına render oluna bilərlər. > **Dillər haqqında qeyd**: Bu dərslər əsasən Python dilində yazılsalar da, bir çoxları R dilində də mövcuddurlar. R dilində olan dərsləri etmək üçün `/solution` qovluğuna keçməyiniz və R dərslərini axtarmağınız lazımdır. Onlara **R Markdown** faylını təmsil edən .rmd genişləndirilməsi daxildir. Bu tip fayllara, `Markdown sənədində` `kod parçaları`(R və ya digər dillərin) və `YAML başlığının`(çıxışın, məsələn PDF-in formatını müəyyən edir) birləşməsi baxa bilərik. Kodunuzu, onun nəticəsini və fikirlərinizi Markdown formatında yazmağa və bütün bunları bir arada etməyə imkan verdiyinə görə, o, data elmi üçün nümunəvi sənədləşdirmə aləti hesab olunur. Bundan əlavə, R Markdown sənədləri PDF, HTML və ya Word kimi çıxış formatlarına render oluna bilərlər.

Loading…
Cancel
Save