Veriyi standartlaştırma
Bazı modeller, K-en yakın komşular (KNN) ve sinir ağları gibi, ölçeklenmiş verilerle daha iyi çalışır — bu yüzden verimizi standartlaştıracağız.
Ayrıca, özellik önemlerine göre önemsiz değişkenleri (haftanın günü) .iloc[] ile features DataFrame'lerini indeksleyerek kaldıracağız. KNN, tahmin için benzer noktaları bulurken mesafeleri kullanır; bu yüzden büyük ölçekli özellikler küçük olanları bastırır. Veriyi ölçeklemek bunu düzeltir.
sklearn'ün scale() fonksiyonu veriyi standartlaştırır; ortalamayı 0'a ve standart sapmayı 1'e ayarlar. İdealde eğitim verisinde StandardScaler ile fit_transform(), test verisinde ise transform() kullanmak isteriz, fakat burada 15 satır kod sınırımız var.
Veriyi ölçekledikten sonra, histogramlar çizerek bunun işe yarayıp yaramadığını kontrol edeceğiz.
Bu egzersiz, kursun bir parçasıdır
Python ile Finans için Machine Learning
Egzersiz talimatları
- Haftanın günü özelliklerini
.ilockullanarak eğitim/test özelliklerinden kaldır (haftanın günü son 4 özelliktir). train_featuresvetest_features'ı sklearn'ünscale()fonksiyonuyla standartlaştır; ölçeklenmiş özellikleriscaled_train_featuresvescaled_test_featuresolarak sakla.- İlk alt grafikte (
ax[0]) ölçeklenmemiştrain_featuresiçindeki 14 günlük RSI hareketli ortalamasının (indeksi[:, 2]) histogramını çiz. - İkinci alt grafikte (
ax[1]) standartlaştırılmış 14 günlük RSI hareketli ortalamasının histogramını çiz.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
from sklearn.preprocessing import scale
# Remove unimportant features (weekdays)
train_features = train_features.iloc[:, :-4]
test_features = test_features.____
# Standardize the train and test features
scaled_train_features = scale(train_features)
scaled_test_features = ____
# Plot histograms of the 14-day SMA RSI before and after scaling
f, ax = plt.subplots(nrows=2, ncols=1)
train_features.iloc[:, 2].hist(ax=____)
ax[1].hist(scaled_train_features[:, 2])
plt.show()