Machine Learning Tahmin (Prediction) Metotları
Machine Learning Tahmin (Prediction) Metotları
Makine öğrenmesi tahmin algoritmaları İçin Kullanılabilecek Python Şablonu
Libraries - Kütüphaneler
xxxxxxxxxx
# Linear Regression Library - Doğrusal Regresyon Kütüphanesi
from sklearn.linear_model import LinearRegression
# P value Library - P degeri Kütüphanesi
import statsmodels.api as sm
# R_Square value Library - R2 (kare) değeri Kütüphanesi
from sklearn.metrics import r2_score
# Polynomial Regression Library - Polinom Regresyon Kütüphanesi
from sklearn.preprocessing import PolynomialFeatures
# Data Scaler Library - Veri Ölçekleme Kütüphanesi
from sklearn.preprocessing import StandardScaler
# Support Vector Regression Library - Destek Vektör Regresyon Kütüphanesi
from sklearn.svm import SVR
# Decision Tree Regression Library - Karar Ağacı Regrasyon Kütüphanesi
from sklearn.tree import DecisionTreeRegressor
# Random Forest Regression Library - Rassal Orman Regresyon Kütüphanesi
from sklearn.ensemble import RandomForestRegressor
# NumPy, Python programlama dili için bir kütüphane olup, büyük, çok boyutlu diziler ve matrisler icin destek eklerken, bu dizilerde çalışmak için yüksek düzeyli matematiksel fonksiyonların geniş bir koleksiyonudur.
import numpy as np
# Matplotlib, Python programlama dili ve onun sayısal matematik uzantısı NumPy için bir çizim kitapliğidir.
import matplotlib.pyplot as plt
# pandas, veri işlemesi ve analizi için Python programlama dilinde yazilmiş olan bir yazılım kütüphanesidir. Bu kütüphane temel olarak zaman etiketli serileri ve sayısal tabloları işlemek için bir veri yapısı oluşturur ve bu şekilde çesitli işlemler bu veri yapısı üzerinde gerçekleştirilebilir olur.
import pandas as pd
Not:
- NumPy ve Pandas kütüphanelerini veriyi işlemek ve hafızada yönlendirmek için kullanıyoruz (dataFrame gibi sınıflar için).
- Sklearn (Scikit-learn): Python programlama dili için ücretsiz bir yazılım makinesi öğrenme kütüphanesidir.
Data Loading - Veri Yükleme
xxxxxxxxxx
# Data Loading - Veri Yükleme
veriler = pd.read_csv('veri_kümesi.csv')
# Data Frame - Veri Çercevesi / Slice - Dilimleme
x = veriler.iloc[:, 1:2]
y = veriler.iloc[:, 2:]
# NumPY, Array Conversion - Dizi Dönüşümü
X = x.values
Y = y.values
Veri yükleme aşamasında, verinin yükleneceği dosyanın yanında, bağımlı ve bağımsız değişkenleri içeren iki ayrı kolon oluşturulmalıdır. Ayrıca X ve Y değişkenleri de NumPy dizisi olarak bu dataFrame'lerden '.values' ile verilerini alır.
xxxxxxxxxx
# Correlation Matrix - Korelasyon Matrisi, Kolonların Birbiri İle Olan ilişkisi
print("Correlation Matrix")
print(veriler.corr())
Veriler üzerinde karar verirken, kullanılacak önemli ön işleme aşamalarından birsidir, bu matris ile kolonların birbiri ile olan ilişkisi görülebilir.
Linear Regression - Doğrusal Regresyon
xxxxxxxxxx
# * Linear Regression - Doğrusal Regresyon
print("Linear Regression - Doğrusal Regresyon:")
# Creating Model - Model Oluşturma
lin_reg_for_LR = LinearRegression()
lin_reg_for_LR.fit(X, Y)
# P value - P değeri
p_value_for_LR = sm.OLS(lin_reg_for_LR.predict(X), X)
print(" > Linear Regression P value;")
print(p_value_for_LR.fit().summary())
# R_Square Value - R2 (R Kare) Değeri
r_square_value_for_LR = r2_score(Y, lin_reg_for_LR.predict(X))
print(" > Linear Regression R_Square Value;")
print(r_square_value_for_LR)
# Visualization - Görselleştirme
plt.scatter(X, Y, color='blue')
plt.plot(X, lin_reg_for_LR.predict(X), color='red')
plt.title("For Linear Regression")
plt.show()
# Predictions - Tahminler
print(" > Linear Regression Predictions;")
print(lin_reg_for_LR.predict([[11]]))
print(lin_reg_for_LR.predict([[6.6]]))
Burada doğrusal regresyon (Linear Regression) üzerinden X ve Y dizileri verilerek bir makine öğrenmesi algoritması eğitilmiş, oluşan model daha sonra OLS ve r2_score fonksiyonları ile ölçülmüş ve modelin ne kadar başarılı tahmin yaptığı ölçülmüştür.
Verileri daha rahat görmek için 'matplotlib.pyplot' yardımıyla görselleştirme yapılmıştır.
Not: fit() fonksiyonu ile eğitir, predict() fonksiyonu ile tahminde bulunmasını sağlarız.
Polynomial Regression - Polinom Regresyon
xxxxxxxxxx
# * Polynomial Regression - Doğrusal Olmayan (nonLinear)/Polinom Regresyon
print("Polynomial Regression - Polinom Regresyon:")
# 4th Degree/Fourth Degree Polynomial - 4. Dereceden Polinom
print(" > 4th Degree Model")
# Creating Model - Model Oluşturma
poly_reg = PolynomialFeatures(degree=4)
x_poly = poly_reg.fit_transform(X)
lin_reg_for_PR = LinearRegression()
lin_reg_for_PR.fit(x_poly, Y)
# P value - P değeri
p_value_for_PR = sm.OLS(lin_reg_for_PR.predict( poly_reg.fit_transform(X)), X)
print(" > Polynomial Regression P value;")
print(p_value_for_PR.fit().summary())
# R_Square Value - R2 (R Kare) Değeri
r_square_value_for_PR = r2_score( Y, lin_reg_for_PR.predict(poly_reg.fit_transform(X)))
print(" > Polynomial Regression R_Square Value;")
print(r_square_value_for_PR)
# Visualization - Görselleştirme
plt.scatter(X, Y)
plt.plot(X, lin_reg_for_PR.predict( poly_reg.fit_transform(X)), color='red')
plt.title("For Polynomial Regression")
plt.show()
# Predictions - Tahminler
print(" > Polynomial Regression Predictions;")
print(lin_reg_for_PR.predict( poly_reg.fit_transform([[11]])))
print(lin_reg_for_PR.predict( poly_reg.fit_transform([[6.6]])))
Polynomial regression yöntemi, Linear Regression yöntemine çok benzer. Aradaki fark, verilerin doğrusal regresyona verilmeden önce bir polinom öznitelik fonksiyonuna verilmesidir. bu işlem yukarıdaki kodda da görüldüğü üzere, 'PolynomialFeatures' nesnesi üzerinden yapılmaktadır.
Support Vector Regression (SVR) - Destek Vektör Regresyonu
xxxxxxxxxx
# * Support Vector Regression (SVR) - Destek Vektör Regresyonu
print("Support Vector Regression (SVR) - Destek Vektör Regresyonu:")
# Data Scaler - Verilerin Ölçeklenmesi
sc1 = StandardScaler()
x_olcekli = sc1.fit_transform(X)
sc2 = StandardScaler()
y_olcekli = np.ravel(sc2.fit_transform(Y.reshape(-1, 1)))
# Creating Model - Model Oluşturma
svr_reg = SVR(kernel="rbf")
svr_reg.fit(x_olcekli, y_olcekli)
# P value - P değeri
p_value_for_SVR = sm.OLS(svr_reg.predict(x_olcekli), x_olcekli)
print(" > Support Vector Regression P value;")
print(p_value_for_SVR.fit().summary())
# R_Square Value - R2 (R Kare) Değeri
r_square_value_for_SVR = r2_score(y_olcekli, svr_reg.predict(x_olcekli))
print(" > Support Vector Regression R_Square Value;")
print(r_square_value_for_SVR)
# Visualization - Görselleştirme
plt.scatter(x_olcekli, y_olcekli)
plt.plot(x_olcekli, svr_reg.predict(x_olcekli), color="red")
plt.title("For Support Vector Regression")
plt.show()
# Predictions - Tahminler
print(" > Support Vector Regression Predictions;")
print(svr_reg.predict([[11]]))
print(svr_reg.predict([[6.6]]))
Destek vektör regresyonunun en önemli özelliği, marjinal verilere karşı hassas olmasıdır. Bu yüzden, öncelikle standartlaştırma yapılması gerekir. Yukarıdaki kodda, 'StandardScaler' sınıfı sayesinde hem X hem de Y dizileri ölçeklenmiştir. Ardından 'SVR' sınıfından 'rbf' çekirdeği (kernel) ile oluşturulan svr_reg isimli nesne ile tahmin modeli oluşturulmuştur.
Decision Tree Regression - Karar Ağacı Regresyonu
xxxxxxxxxx
# * Decision Tree Regression - Karar Ağacı Regresyonu
print("Decision Tree Regression - Karar Ağacı Regresyonu:")
# Creating Model - Model Oluşturma
dt_reg = DecisionTreeRegressor(random_state=0)
dt_reg.fit(X, Y)
# P value - P değeri
p_value_for_DT = sm.OLS(dt_reg.predict(X), X)
print(" > Decision Tree Regression P value;")
print(p_value_for_DT.fit().summary())
# R_Square Value - R2 (R Kare) Değeri
r_square_value_for_DT = r2_score(Y, dt_reg.predict(X))
print(" > Decision Tree Regression R_Square Value;")
print(r_square_value_for_DT)
# Visualization - Görselleştirme
plt.scatter(X, Y)
plt.plot(X, dt_reg.predict(X), color="red")
plt.title("For Decision Tree Regression")
plt.show()
# Predictions - Tahminler
print(" > Decision Tree Regression Predictions;")
print(dt_reg.predict([[11]]))
print(dt_reg.predict([[6.6]]))
'DecisionTreeRegressor' sınıfı ile oluşturulan dt_reg isimli nesne ile tahmin modeli oluşturulmuştur.
Random Forest Regression - Rassal Orman Regresyonu
xxxxxxxxxx
# * Random Forest Regression - Rassal Orman Regresyonu
print("Random Forest Regression - Rassal Orman Regresyonu:")
# Creating Model - Model Oluşturma
rf_reg = RandomForestRegressor(n_estimators=10, random_state=0)
rf_reg.fit(X, Y)
# P value - P değeri
p_value_for_RFR = sm.OLS(rf_reg.predict(X), X)
print(" > Random Forest Regression P value;")
print(p_value_for_RFR.fit().summary())
# R_Square Value - R2 (R Kare) Değeri
r_square_value_for_RFR = r2_score(Y, rf_reg.predict(X))
print(" > Random Forest Regression R_Square Value;")
print(r_square_value_for_RFR)
# Visualization - Görselleştirme
plt.scatter(X, Y)
plt.plot(X, rf_reg.predict(X), color="red")
plt.title("For Random Forest Regression")
plt.show()
# Predictions - Tahminler
print(" > Random Forest Regression Predictions;")
print(rf_reg.predict([[11]]))
print(rf_reg.predict([[6.6]]))
Alt yapısında karar ağacı kullanan rassal ormanlar (Random Forest), 'RandomForestRegressor' sınıfından üretilmiş nesne ile fit() ve predict() metotlarını kullanarak makine öğrenmesini gerçekleştirir.