Tam metin 5320 Kelimeler, tahmini öğrenme süresi 20 dakika
Resim kaynağı: https: //blog.datasciencedojo.c
Giriş
Günümüzde yüzlerce (hatta binlerce) özelliğe sahip veri setlerini kullanmak çok yaygındır. Bu özelliklerin sayısı, veri setinde depolanan gözlem sayısıyla hemen hemen aynıysa (veya birincisi, ikincisinden fazlaysa), makine öğrenimi modelinin aşırı yüklenmesine neden olabilir. Bu tür sorunları önlemek için, düzenlileştirme veya boyut azaltma teknikleri (özellik çıkarma) kullanılmalıdır. Makine öğreniminde, bir veri setinin boyutu, onu temsil etmek için kullanılan değişkenlerin sayısına eşittir.
Düzenli hale getirmenin kullanılması kesinlikle aşırı uyum riskini azaltmaya yardımcı olur, ancak özellik çıkarma tekniklerini kullanmanın da bazı avantajları vardır, örneğin:
· Doğruluğu artırın
· Aşırı takma riskini azaltın
· Eğitim hızını artırın
Veri görselleştirme yeteneklerini geliştirin
· Model yorumlanabilirliğini iyileştirin
Özellik çıkarma, mevcut veri setinde yeni özellikler oluşturarak (ve orijinal özellikleri atarak) veri setindeki özelliklerin sayısını azaltmayı amaçlar. Bu yeni basitleştirilmiş özellik setlerinin, orijinal özellik setindeki bilgilerin çoğunu özetleyebilmesi gerekir. Bu, entegre orijinal özellik kümesinden orijinal özelliğin basitleştirilmiş bir sürümünün oluşturulmasına izin verir.
Özellik seçimi, bir veri kümesindeki özelliklerin sayısını azaltmak için yaygın olarak kullanılan bir tekniktir. Bu ve özellik çıkarma arasındaki fark şudur: özellik seçimi, veri setindeki mevcut özelliklerin önemini sıralamayı ve daha az önemli olan özellikleri atmayı (yeni özellikler oluşturmayın) amaçlamaktadır.
Bu makale, özellik çıkarma teknolojisinin nasıl uygulanacağını tanıtmak için örnek olarak Kaggle Mantarı Sınıflandırma Veri Kümesini alacaktır. Bu makalenin amacı, verilen özellikleri gözlemleyerek mantarların zehirli olup olmadığını tahmin etmektir.
Öncelikle, gerekli tüm veritabanlarını içe aktarmanız gerekir.
ithalat zamanı
numpy'yi np olarak içe aktar
pandaları pd olarak içe aktar
matplotlib.pyplot dosyasını plt olarak içe aktar
matplotlib.pyplot ithalat rakamından
seaborn'u sns olarak ithal etmek
sklearn ithalat önişlemesinden
sklearn.preprocessing adresinden LabelEncoder'ı içe aktar
sklearn.preprocessing'den import StandardScaler
sklearn.model_selection'dan import train_test_split
sklearn.metrics içeriğinden sınıflandırma_report içe aktar, confusion_matrix
sklearn.ensemble içeriğinden import RandomForestClassifier
extraction17.py ile barındırılır GitHub tarafından
Aşağıdaki şekil, bu örnekte kullanılacak olan veri setidir.
Şekil 1: Mantar sınıflandırma veri seti
Bu verileri makine öğrenimi modeline girmeden önce, verileri özelliklere (X), etiketlere (Y) ve tekli kodların tüm kategorik değişkenlerine bölün.
X = df.drop (, eksen = 1)
Y = df
X = pd.get_dummies (X, prefix_sep = '_')
Y = LabelEncoder (). Fit_transform (Y)
X = Standart Ölçekleyici (). Fit_transform (X)
extraction15.py ile barındırılır GitHub tarafından
Ardından, bir işlev (orman_testi) oluşturun, giriş verilerini bir eğitim kümesine ve bir test kümesine bölün ve rastgele bir orman sınıflandırıcısını eğitin ve test edin.
defforest_test (X, Y):
X_Train, X_Test, Y_Train, Y_Test = train_test_split (X, Y,
test_size = 0.30,
random_state = 101)
start = time.process_time ()
eğitimliforest = RandomForestClassifier (n_estimators = 700) .fit (X_Train, Y_Train)
print (time.process_time () - başlat)
tahmin ormanı = eğitimli orman.predict (X_Test)
baskı (confusion_matrix (Y_Test, tahmin ormanı))
baskı (sınıflandırma_raporu (Y_Test, tahmin ormanı))
extraction14.py, ile GitHub tarafından barındırılır
Artık işlevi önce tüm veri kümesine uygulayabilir ve ardından ikisinin sonuçlarını karşılaştırmak için basitleştirilmiş veri kümesini sürekli olarak kullanabilirsiniz.
forest_test (X, Y)
extraction16.py ile barındırılır GitHub tarafından
Aşağıdaki şekilde gösterildiği gibi, rastgele bir orman sınıflandırıcısını eğitmek için bu özellik setinin tamamını kullanmak, yaklaşık 2,2 saniyelik eğitim süresinde% 100 doğruluk sağlayabilir. Aşağıdaki örnekte, referansınız için eğitim süresi ilk satırda verilmiştir.
2,2676709799999992
> hassas geri çağırma f1-skor desteği 01.001.001.0012741 1.001.001.001164 doğruluk 1.002438 makro ort. 1.001.001.002438 ağırlıklı ortalama 1,001,001,002438
Özellik çıkarma
Temel bileşen analizi (PCA)
PCA, yaygın olarak kullanılan bir doğrusal boyut azaltma tekniğidir. PCA'yı kullanırken, orijinal verileri girdi olarak alın ve orijinal verilerin dağılımını en iyi şekilde özetleyebilecek bir girdi özellikleri kombinasyonu bulmaya çalışın, böylece orijinal verilerin boyutluluğunu azaltın. Çift yönlü mesafeleri gözlemleyerek varyansı en üst düzeye çıkarır ve yeniden yapılandırma hatasını en aza indirir. PCA'da, orijinal veriler bir dizi ortogonal eksene yansıtılır ve her eksendeki veriler önem sırasına göre sıralanır.
PCA, denetimsiz bir öğrenme algoritmasıdır, bu nedenle veri etiketlerine değil, yalnızca değişkenlere odaklanır. Bu, bazı durumlarda veri sınıflandırma hatalarına yol açabilir.
Bu örnekte, PCA önce verileri iki boyuta indirmek için tüm veri kümesine uygulanır ve ardından bu yeni veri özellikleri ve bunların etiketleri kullanılarak bir veri çerçevesi oluşturulur.
sklearn.decomposition'dan importPCA
pca = PCA (n_components = 2)
X_pca = pca.fit_transform (X)
PCA_df = pd.DataFrame (veri = X_pca, sütunlar =)
PCA_df = pd.concat (, eksen = 1)
PCA_df = LabelEncoder (). Fit_transform (PCA_df)
PCA_df.head ()
extraction.py ile barındırılır GitHub
Şekil 2: PCA veri seti
Yeni oluşturulan veri çerçevesi ile artık iki boyutlu bir dağılım grafiğinde bir veri dağıtım grafiği çizmek mümkündür.
şekil (num = Yok, figsize = (8, 8), dpi = 80, facecolor = 'w', edgecolor = 'k')
sınıflar =
renkler =
clas için, renkli inzip (sınıflar, renkler):
plt.scatter (PCA_df.loc,
PCA_df.loc,
c = renk)
plt.xlabel ('Ana Bileşen 1', yazı tipi boyutu = 12)
plt.ylabel ('Ana Bileşen 2', yazı tipi boyutu = 12)
plt.title ('2D PCA', yazı tipi boyutu = 15)
plt.legend ()
plt.grid ()
extraction2.py ile barındırılır GitHub tarafından
Şekil 3: 2D PCA görselleştirme
Şimdi bu adımı tekrarlayabilirsiniz, ancak veriyi üç boyuta düşürün ve animasyonu oluşturmak için Plotly'yi kullanın.
PCA'yı kullanarak, açıklanmış_variance_ratio_Scikit-öğrenme işlevini kullanarak orijinal veri varyansının korunma derecesini de keşfedebilirsiniz. Varyans oranı hesaplandıktan sonra güzel bir görsel grafik oluşturulur.
Rastgele orman sınıflandırıcısını tekrar çalıştırmak için PCA (tüm veri seti yerine) tarafından oluşturulan üç boyutlu özellik setini kullanarak, sınıflandırma doğruluğu% 98 iken, iki boyutlu özellik setini kullanan sınıflandırma doğruluğu% 95'tir.
pca = PCA (n_components = 3, svd_solver = 'tam')
X_pca = pca.fit_transform (X)
baskı (pca.explained_variance_)
forest_test (X_pca, Y)
extraction9.py ile barındırılır GitHub tarafından
2,769664902999999 > hassas geri çağırma f1-skor desteği 00,970,990,9812741 0,990,960,981164 doğruluk 0.982438 makro ort. 0,980,980,982438 ağırlıklı ortalama 0,980,980,982438
Ek olarak, iki boyutlu bir veri seti kullanarak, her farklı veri noktasını sınıflandırmak için rastgele orman tarafından kullanılan karar sınırını görselleştirmek artık mümkün.
itertools'dan ithal ürün
X_Reduced, X_Test_Reduced, Y_Reduced, Y_Test_Reduced = train_test_split (X_pca, Y,
test_size = 0.30,
random_state = 101)
eğitimliforest = RandomForestClassifier (n_estimators = 700) .fit (X_Reduced, Y_Reduced)
x_min, x_max = X_Reduced.min () -1, X_Reduced.max () +1
y_min, y_max = X_Reduced.min () -1, X_Reduced.max () +1
xx, yy = np.meshgrid (np.arange (x_min, x_max, 0.1), np.arange (y_min, y_max, 0.1))
Z = eğitilmişforest.predict (np.c_)
Z = Z.reshape (xx.shape)
plt.contourf (xx, yy, Z, cmap = plt.cm.coolwarm, alpha = 0.4)
plt.scatter (X_Reduced, X_Reduced, c = Y_Reduced, s = 20, edgecolor = 'k')
plt.xlabel ('Ana Bileşen 1', yazı tipi boyutu = 12)
plt.ylabel ('Ana Bileşen 2', yazı tipi boyutu = 12)
plt.title ('Rastgele Orman', fontsize = 15)
plt.show ()
extraction3.py ile barındırılır GitHub tarafından
Şekil 4: PCA rastgele orman karar sınırı
Bağımsız bileşen analizi (ICA)
ICA, her bir bileşeni doğru şekilde tanımlamak (gereksiz tüm gürültüyü gidermek) için girdi verileri olarak bağımsız bileşenlerin bir karışımını kullanan doğrusal bir boyut azaltma yöntemidir. İki girdi özelliğinin doğrusal korelasyonu ve doğrusal olmayan korelasyonu sıfıra eşitse, bağımsız olarak kabul edilebilirler.
ICA, elektroensefalogram ve manyetik rezonans görüntüleme analizi, vb. Gibi tıpta yaygın olarak kullanılmaktadır, genellikle yararlı sinyalleri işe yaramaz sinyallerden ayırmak için kullanılır.
Basit bir ICA uygulama örneğini ele alalım: Ses kaydı yaparken, iki kişi konuşuyor. ICA, seste iki farklı bağımsız bileşeni (yani iki farklı sesi) ayırt edebilir. Bu şekilde, ICA konuşmadaki farklı konuşmacıları belirleyebilir.
Şimdi, veri kümesini tekrar üç boyuta basitleştirmek için ICA'yı kullanabilir, doğruluğunu test etmek için rastgele bir orman sınıflandırıcısı kullanabilir ve sonuçları üç boyutlu bir grafikte grafiklendirebilirsiniz.
sklearn.decomposition import FastICA'dan
ica = FastICA (n_components = 3)
X_ica = ica.fit_transform (X)
forest_test (X_ica, Y)
extraction5.py ile barındırılır GitHub tarafından
2.8933812039999793 > hassas geri çağırma f1-skor desteği 00,970,990,9812741 0,990,960,981164 doğruluk 0.982438 makro ort. 0,980,980,982438 ağırlıklı ortalama 0,980,980,982438
Aşağıdaki animasyondan, PCA ve ICA'nın doğruluğu aynı olmasına rağmen, bunlar tarafından oluşturulan üç boyutlu dağıtım haritalarının farklı olduğu görülebilir.
Doğrusal Ayrımcı Analizi (LDA)
LDA, denetimli öğrenim boyutlarını azaltma teknolojisi ve makine öğrenimi sınıflandırıcısıdır.
LDA, sınıflar arasındaki mesafeyi en üst düzeye çıkarmayı ve sınıflar arasındaki mesafeyi en aza indirmeyi amaçlamaktadır. Bu nedenle LDA ölçü ölçeği olarak sınıf içi mesafeyi ve sınıflar arası mesafeyi alır. Verilerin düşük boyutlu bir uzayda yansıtılması, sınıflar arasındaki mesafeyi en üst düzeye çıkarabilir ve bu da daha iyi sınıflandırma sonuçlarına yol açabilir (farklı sınıflar arasındaki örtüşmeyi azaltabilir) Bu nedenle, LDA üstün bir seçimdir.
LDA kullanılırken, giriş verilerinin bir Gauss dağılımını takip ettiği varsayılmalıdır (bu örnekte olduğu gibi), bu nedenle LDA'nın Gauss olmayan verilere uygulanması yanlış sınıflandırma sonuçlarına yol açabilir.
Bu örnek, veri kümesini tek bir boyutta basitleştirmek, doğruluğunu test etmek ve sonuçları planlamak için LDA'yı çalıştıracaktır.
sklearn.discriminant_analysis importundan LinearDiscriminantAnalysis
lda = LinearDiscriminantAnalysis (n_components = 1)
# bir LDA çalıştırın ve özellikleri dönüştürmek için kullanın
X_lda = lda.fit (X, Y) .transform (X)
print ('Orijinal özellik sayısı:', X.shape)
print ('Azaltılmış özellik sayısı:', X_lda.shape)
extraction11.py ile barındırılır GitHub tarafından
Orijinal özellik sayısı: 117 Azaltılmış özellik sayısı: 1
Bu örnek Gauss dağılımını takip ettiğinden, LDA çok iyi sonuçlar elde etti.Rastgele orman sınıflandırıcı testini kullanarak doğruluk% 100'e ulaştı.
orman_test (X_lda, Y)
extraction12.py ile barındırılır GitHub tarafından
1,2756952610000099 > hassas geri çağırma f1-skor desteği 01.001.001.0012741 1.001.001.001164 doğruluk 1.002438 makro ort. 1.001.001.002438 ağırlıklı ortalama 1,001,001,002438
X_Reduced, X_Test_Reduced, Y_Reduced, Y_Test_Reduced = train_test_split (X_lda, Y,
test_size = 0.30,
random_state = 101)
start = time.process_time ()
lda = LinearDiscriminantAnalysis (). fit (X_Reduced, Y_Reduced)
print (time.process_time () - başlat)
predictionlda = lda.predict (X_Test_Reduced)
baskı (confusion_matrix (Y_Test_Reduced, tahminlda))
baskı (sınıflandırma_raporu (Y_Test_Reduced, tahminlda))
extraction13.py ile barındırılır GitHub tarafından
0,008464782999993758 > hassas geri çağırma f1-skor desteği 01.001.001.0012741 1.001.001.001164 doğruluk 1.002438 makro ort. 1.001.001.002438 ağırlıklı ortalama 1,001,001,002438
Son olarak, iki sınıfın dağılımının tek boyutlu bir veri dağıtım haritası oluşturmaya benzediğini görsel olarak görebilirsiniz.
Şekil 5: LDA sınıf ayrımı
Yerel Doğrusal Gömme (LLE)
Bu makale, farklı özellikler arasındaki doğrusal ilişki için iyi çalışabilen PCA ve LDA gibi yöntemleri tartışmıştır.Aşağıda doğrusal olmayan durumlarla nasıl başa çıkılacağı tartışılacaktır.
LLE, çok katlı öğrenmeye dayalı bir boyut azaltma teknolojisidir. Manifold verileri, yüksek boyutlu bir alana gömülü D boyutlu nesneleri ifade eder. Manifold öğrenme, nesnenin gereksiz geniş bir alanda değil, orijinal D boyutunda görünmesini amaçlamaktadır.
Makine öğreniminde manifold öğrenmeyi açıklamak için kullanılan tipik bir örnek, Swiss Roll Manifold'dur (Şekil 6). Bazı verileri girdi olarak alırız, bu verilerin dağılımı bir hacme benzer (üç boyutlu uzayda) ve sonra verileri iki boyutlu uzaya sıkıştırmak için genişletir.
Manifold öğrenme algoritmaları şunları içerir: Isomap, LLE, ModifiedLocally Linear Embedding, Hessian Eigenmapping, vb.
Şekil 6: Manifold öğrenme
Şimdi bu örnekte LLE'yi nasıl kullanacağınız konusunda size yol göstereceğim. Scikit-learn belgelerine göre:
LLE, yerel bir mahallede uzaklığa sahip verilerin düşük boyutlu bir projeksiyonunu arar. Küresel karşılaştırma yoluyla en iyi doğrusal olmayan yerleştirmeyi bulan bir dizi PCA olarak kabul edilebilir.
Artık veri setinde LLE'yi çalıştırabilir, verileri 3 boyuta indirebilir, doğruluğu test edebilir ve sonuçların grafiğini çizebilirsiniz.
sklearn.manifold'dan yerel olarak içe aktarımLinearEmbedding
embedding = LocallyLinearEmbedding (n_components = 3)
X_lle = embedding.fit_transform (X)
orman_test (X_lle, Y)
extraction6.py ile barındırılır GitHub tarafından
2.578125 hassas geri çağırma f1-skor desteği 00,531,000,6912731 1.000.020.041165 mikro ortalama 0,530,530,532438 makro ort. 0,760,510,362438 ağırlıklı ortalama 0,750,530,382438
t-dağıtılmış rastgele mahalle gömme (t-SNE)
t-SNE, yüksek boyutlu veri görselleştirme için tipik bir doğrusal olmayan boyutluluk azaltma teknolojisidir. Başlıca uygulamaları doğal dil işleme (NLP), konuşma işleme vb.
t-SNE, orijinal yüksek boyutlu uzaydaki giriş özelliklerinin ikili olasılık benzerliklerinden oluşan dağılım ile indirgenmiş düşük boyutlu uzaydaki eşdeğer dağılımı arasındaki farkı en aza indirerek çalışır. İki farklı dağılım arasındaki farkı ölçmek için Kullback-Leiber (KL) diverjansını kullanır. Ardından, KL sapmasını en aza indirmek için eğimli iniş kullanın.
T-SNE kullanılırken, yüksek boyutlu uzay Gauss dağılımı kullanılarak modellenir ve düşük boyutlu uzay Student t dağılımı kullanılarak modellenir. Bu, düşük boyutlu uzaya dönüştürme nedeniyle bitişik noktalar arasında dengesiz mesafe dağılımı sorununu önlemek için yapılır.
Artık t-SNE'yi kullanmaya ve veri setini 3 boyuta indirmeye hazırdır.
sklearn.manifold'dan importTSNE
start = time.process_time ()
tsne = TSNE (n_components = 3, ayrıntılı = 1, karmaşıklık = 40, n_iter = 300)
X_tsne = tsne.fit_transform (X)
print (time.process_time () - başlat)
extraction4.py ile barındırılır GitHub tarafından
121 en yakın komşu hesaplanıyor ... 0.139 saniyede indekslenmiş 8124 örnek ... 11.891s'de 8124 örnek için hesaplanan komşular ... Örnek için hesaplanmış koşullu olasılıklar
1000/8124 Örnek için hesaplanmış koşullu olasılıklar
2000/8124 Örnek için hesaplanmış koşullu olasılıklar
3000/8124 Örnek için hesaplanmış koşullu olasılıklar
4000/8124 Örnek için hesaplanmış koşullu olasılıklar
5000/8124 Örnek için hesaplanmış koşullu olasılıklar
6000/8124 Örnek için hesaplanmış koşullu olasılıklar
7000/8124 Örnek için hesaplanmış koşullu olasılıklar
8000/8124 Örnek için hesaplanmış koşullu olasılıklar
8124/8124 Ortalama sigma: 2.658530 Erken ile 250 yinelemeden sonra KL sapması
abartı: 65.601128300 yinelemeden sonra KL sapması: 1.909915143.984375
Görselleştirilmiş sonuçların dağılımı, verilerin azaltılmış bir alana dönüştürülse bile, iyi ayrılabileceğini açıkça göstermektedir.
Rastgele ormanın doğruluğunu test etmek için t-SNE boyutsallık azaltma alt kümesini kullanın, böylece sınıflandırmanın kolayca ayrılabileceğini onaylayın.
orman_test (X_tsne, Y)
extraction10.py ile barındırılır GitHub tarafından
2.6462027340000134 > hassas geri çağırma f1-skor desteği 01.001.001.0012741 1.001.001.001164 doğruluk 1.002438 makro ort. 1.001.001.002438 ağırlıklı ortalama 1,001,001,002438
Otomatik kodlayıcı
Otomatik kodlayıcı, boyutluluk azaltma tekniği olarak kullanılabilecek bir tür makine öğrenimi algoritması anlamına gelir. Onunla diğer boyut azaltma teknikleri arasındaki temel fark, otomatik kodlayıcının verileri yüksek boyutlardan düşük boyutlara yansıtmak için doğrusal olmayan bir dönüşüm kullanmasıdır.
Aşağıdakiler gibi birkaç farklı otomatik kodlayıcı türü vardır:
Otomatik kodlayıcıyı etkisizleştirme
Varyasyonel otomatik kodlayıcı
Evrişimli otomatik kodlayıcı
Seyrek otomatik kodlayıcı
Bu örnek ilk olarak temel bir otomatik kodlayıcı oluşturacaktır (Şekil 7). Bir otomatik kodlayıcının temel yapısı iki ana bölüme ayrılabilir:
1. Kodlayıcı: Tüm olası gürültü ve gereksiz bilgileri ortadan kaldırmak için giriş verilerini sıkıştırın. Kodlayıcının çıktısına genellikle darboğaz veya potansiyel alan adı verilir.
2. Kod çözücü: Kodlanmış gizli boşluğu girdi olarak alın ve orijinal otomatik kodlayıcı girişini yalnızca sıkıştırılmış biçimini (kodlanmış gizli alan) kullanarak yeniden oluşturmaya çalışın.
Tüm girdi özellikleri birbirinden bağımsız ise, otomatik kodlayıcının düşük boyutlu uzayda veri girişini kodlaması ve kodunu çözmesi zor olacaktır.
Şekil 7: Otomatik kodlayıcı yapısı
Otomatik kodlayıcılar Keras API kullanılarak python'da uygulanabilir. Bu örnek, kodlama katmanında giriş verilerinin belirli sayıda özelliğe indirgeneceğini belirtir (örnek 3). Aşağıdaki kod parçacığından da görebileceğiniz gibi, otomatik kodlayıcı özellik olarak X (giriş özelliği) ve etiket (X, Y) kullanır.
Bu örnekte, bu makale kodlama aşamasında aktivasyon fonksiyonu olarak ReLu ve kod çözme aşamasında aktivasyon fonksiyonu olarak Softmax kullanmaya karar verdi. Doğrusal olmayan bir etkinleştirme işlevi kullanılmıyorsa, o zaman otomatik kodlayıcı, giriş verilerinin boyutluluğunu azaltmak için doğrusal dönüşümü kullanmaya çalışacaktır (böylece PCA kullanmaya benzer bir sonuç alacaktır).
keras.layers'dan Girdi, Yoğun
keras.models'ten içe aktarma Modeli
input_layer = Girdi (şekil = (X.shape,))
kodlanmış = Yoğun (3, aktivasyon = 'relu') (input_layer)
kodu çözülmüş = Yoğun (X.shape, aktivasyon = 'softmax') (kodlanmış)
autoencoder = Model (input_layer, kodu çözülmüş)
autoencoder.compile (optimize edici = 'adam', kayıp = 'binary_crossentropy')
X1, X2, Y1, Y2 = train_test_split (X, X, test_size = 0.3, random_state = 101)
autoencoder.fit (X1, Y1,
epochs = 100,
batch_size = 300,
shuffle = Doğru,
ayrıntılı = 30,
validation_data = (X2, Y2))
kodlayıcı = Model (input_layer, kodlanmış)
X_ae = encoder.predict (X)
extraction7.py ile barındırılır GitHub tarafından
Şimdi, önceki örnekle aynı adımları tekrarlayabilirsiniz, bu sefer özellik çıkarma olarak basit bir otomatik kodlayıcı kullanarak.
orman_test (X_ae, Y)
extraction8.py ile barındırılır GitHub tarafından
1.734375 > hassas geri çağırma f1-skor desteği 00,950,970,9612741 0,970,940,961164 mikro ortalama 0,960,960,962438 makro ort. 0,960,960,962438 ağırlıklı ortalama 0,960,960,962438
Umarım bir şey alırsın! Okuduğunuz için teşekkürler!
Yorum Beğen Takip Et
AI öğrenme ve geliştirmenin kuru mallarını paylaşalım
Yeniden yazdırıyorsanız, lütfen arka planda bir mesaj bırakın ve yeniden yazdırma şartnamelerine uyun