Makine Öğrenmesi - II. Doğrusal Olmayan İlişkiler (Non-Linear Relationships)

II. YSA - BernoulliRBM

Yayın tarihi :05-Oca-22
Bölüm kodlarını ve/veya veri setlerini indir.

BernoulliRBM (Bernoulli Restricted Boltzmann Machine - RBM), ileri beslemeli yapay sinir ağı sınıfıdır. İkili görünür katmanlara ve ikili gizli katmanlara sahiptir. 

Kullanımı için BernoulliRBM kütüphanesinin içe aktarılması gerekmektedir.

Söz dizimi: BernoulliRBM(n_components=256, learning_rate=0.1, batch_size=10, n_iter=10, verbose=0, random_state=None)

  • n_components, ikili gizli birimlerin sayısını temsil eder. Default olarak 256 değerini alır.
  • learning_rate, ağırlıkların öğrenme oranını temsil eder. 
  • batch_size, öğrenmek için aldığı örnek sayısını temsil eder.

Örnek-1: Ev fiyatlarının bulunduğu "kc_house_data" adlı veri setine BernoulliRBM işlemi uygulayalım.

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
import warnings
warnings.filterwarnings("ignore")

from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error,r2_score,mean_absolute_error

from sklearn.neural_network import BernoulliRBM
from sklearn.preprocessing import StandardScaler

Keşifsel Veri Analizi EDA 

df=pd.read_csv("kc_house_data.csv")
df.head()

Çıktı:

df.shape

Çıktı:

(21613, 21)
#id,zipcode,lat,long değerleri sayısal olarak bir üstünlük belirtmediğinden kaldıralım
df.drop(["id","zipcode","lat","long"],axis=1,inplace=True)

#date alanını düzenleyerek yıl,ay ve gün olarak yeni sütunda oluşturalım 
df["date"]=pd.to_datetime(df["date"])
df["year"]=(df["date"]).dt.year
df["month"]=(df["date"]).dt.month
df["day"]=(df["date"]).dt.day
#date alanını yıl,ay,gün olarak ayırdığımız için bu sütunu kaldırabiliriz.
df.drop("date",axis=1,inplace=True)

#yr_built ve yr_renovated sütununu büyük sayılardan kurtararak küçük sayılara çevirerek yaşlarını bulalım
df["yr_built"]=2022-df["yr_built"]
df["yr_renovated"]=2022-df["yr_renovated"]
df["yr_renovated"]=df["yr_renovated"].map(lambda x: 0 if x==2022 else x)

Regresyon İşlemi 

#x ve ye değerlerini atayalım
x,y=df.drop("price",axis=1),df[["price"]]
#Train ve test işlemlerinde kullanılacak değerleri ayıralım
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=13,test_size=.2)
#son durumda train ve test verilerinin boyutlarına bakalım
x_train.shape,x_test.shape,y_train.shape,y_test.shape

Çıktı:

((17290, 18), (4323, 18), (17290, 1), (4323, 1))
#verileri büyük boyutlarda değilde belirli bir aralıkta değerlerine göre standart hale getirelim
#standart hale getirmemizin en önemli nedenlerinden biri performanstır.
sc=StandardScaler()
scale=sc.fit(x_train)
scaled_xTrain=scale.transform(x_train)
scaled_xTest=scale.transform(x_test)
#örnek olarak görüntüleyelim
scaled_xTrain[0:1]

Çıktı:

array([[ 0.67304714, -0.80077147, -0.08588714, -0.20073274, -0.91438604,
        -0.08602115, -0.30106929,  0.91510812, -0.55653171, -0.74407221,
         1.22528542,  0.30800523, -0.17846518, -0.06540858, -0.1918528 ,
         1.44101091, -1.14123021,  0.84029233]])
#hidden_layer_sizes boyutu bilgisayar gücüne göre artırılabilir.
BRBM=BernoulliRBM(
    n_components=512,
    batch_size=32,
    learning_rate=0.01
)
#Modeli eğitelim
model=BRBM.fit(scaled_xTrain,y_train)
#scaled_xTest için tahmin işlemi yapalım
predict_BRBM=model.score_samples(scaled_xTest)
predict_BRBM[0:5]

Çıktı:

array([-7.80741632e+02, -0.00000000e+00, -4.59063548e+02, -8.10782679e-08,
       -9.76501360e+01]) 
(mean_squared_error(y_test,predict_BRBM))**.5

Çıktı:

652569.6483769497
r2_score(y_test,predict_BRBM)*100

Çıktı:

-229.4680773935224
Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.