-
Notifications
You must be signed in to change notification settings - Fork 18
/
b-9-tahmin_algoritmalara_aciklamali_ozet.py
121 lines (115 loc) · 5.2 KB
/
b-9-tahmin_algoritmalara_aciklamali_ozet.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 4 02:17:42 2018
@author: regkr
"""
#1. kutuphaneler
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.metrics import r2_score
import statsmodels.api as sm
"""
numpy ve pandas kütüphanelerini veriyi işlemek ve hafızada yönlendirmek için kullanıyoruz
(data frame gibi sınıflar için)
"""
# veri yukleme
veriler = pd.read_csv('maaslar_yeni.csv')
x = veriler.iloc[:,2:5]
y = veriler.iloc[:,5:]
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. Bağımsız değişkenlerin tamamının x isminde bir dataframe
içerisinde ve tek bir kolondan oluşan bağımlı değişkenleri ise y ismine bir data firma içerisinde
duracağı kabulü yapılmıştır. Ayrıca X ve Y değişkenleri de numpy dizisi olarak bu dataframe'lerden
.values özelliğini alır.
"""
#Korelasyon Matrisi
print(veriler.corr())
"""
#Veriler üzerinde karar verirken, kullanılacak önemli ön işleme aşamalarından birsi de
korelasyon matrisidir ve bu matris ile kolonların birbiri ile olan ilişkisi görülebilir.
"""
#Linear Regression
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X,Y)
model = sm.OLS(lin_reg.predict(X),X)
print(model.fit().summary())
print("Linear R2 degeri:")
print(r2_score(Y, lin_reg.predict((X))))
"""
#Sci-Kit Learn kütüphanesinin genel bir özelliği, fit() fonksiyonu ile eğitmesi ve predict
fonksiyonu ile tahminde bulunmasıdır. Buradaki örnekte doğrusal regresyon (linear regression)
üzerinden X ve Y dizileri verilerek bir makine öğrenmesi algoritması eğitilmiş ve oluşan model
daha sonra OLS ve r2_score fonksiyonları ile ölçülmüştür. Ölçüm sırasında gerçek verileri tutan
Y değişkeni (numpy dizisi) ile lin_reg objesinin predict fonksiyonun döndürdüğü tahmin değerleri
(yani modelin tahmin etttiği değerler) karşılaştırılmış dolayısıyla modelin ne kadar başarılı
tahmin yaptığı ölçülmüştür.
"""
#Polynomial Regression
from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree = 4)
x_poly = poly_reg.fit_transform(X)
print(x_poly)
lin_reg2 = LinearRegression()
lin_reg2.fit(x_poly,y)
model2 = sm.OLS(lin_reg2.predict(poly_reg.fit_transform(X)),X)
print(r2_score(Y, lin_reg2.predict(poly_reg.fit_transform(X)) ))
"""
#Polynomial regression yöntemi aslında doğrusal regresyondan farklı değildir. Hatta aynı nesne
ve fonksiyonların kullanıldığı söylenebilir. Buradaki hile, verilerin doğrusal regresyona
verilmeden önce bir polinom öznitelik fonksiyonuna verilmesidir. bu işlem yukarıdaki kodda da
gösterildiği üzere, PolynomialFeattures nesnesi üzerinden yapılmaktadır.
"""
#Destek Vektör Regresyonu ve Ölçekleme (Support Vector Regression , Scaling)
from sklearn.preprocessing import StandardScaler
sc1 = StandardScaler()
x_olcekli = sc1.fit_transform(X)
sc2 = StandardScaler()
y_olcekli = sc2.fit_transform(Y)
from sklearn.svm import SVR
svr_reg = SVR(kernel = 'rbf')
svr_reg.fit(x_olcekli,y_olcekli)
model3 = sm.OLS(svr_reg.predict(x_olcekli),x_olcekli)
print(model3.fit().summary())
print(r2_score(y_olcekli, svr_reg.predict(x_olcekli)) )
"""
#Destek vektör regresyonunun en önemli özelliği, marjinal verilere karşı hassas olmasıdır.
Bu yüzden ve verilerin daha iyi tahminini sağlamak için, öncelikle standartlaştırma yapılması
gerekir. Yukarıdaki kodun ilk parçasında, StandardScaler sınıfından türettilmiş sc1 ve sc2
nesneleri sayesinde hem X hem de Y dizileri ölçeklenmektedir. Ardından SVR sınıfından rbf
çekirdeği (kernel) ile üretilen svr_reg isimli nesne ile tahmin modeli oluşturulmakta,
bunun için de sklearn klasiği olan fit metodu kullanılmaktadır.
"""
#Karar Ağacı ile Tahmin (Decision Tree)
from sklearn.tree import DecisionTreeRegressor
r_dt = DecisionTreeRegressor(random_state=0)
r_dt.fit(X,Y)
print('dt ols')
model4 = sm.OLS(r_dt.predict(X),X)
print(model4.fit().summary())
print("Decision Tree R2 degeri:")
print(r2_score(Y, r_dt.predict(X)) )
"""
#Yapı olarak buraya kadar kullanılan sınıflandırma algoritmalarından pek de farklı olmayan
karar ağacı sınıflandırması, DecisionTreeRegressor sınıfından türetilmiş ve yine X ve Y
dizileri üzerinde fit() metodu ile bir model inşası için kullanılmıştır.
"""
#Rassal Orman (Random Forest)
from sklearn.ensemble import RandomForestRegressor
rf_reg = RandomForestRegressor(n_estimators = 10, random_state=0)
rf_reg.fit(X,Y)
print('dt ols')
model5 = sm.OLS(rf_reg.predict(X),X)
print(model5.fit().summary())
print("Random Forest R2 degeri:")
print(r2_score(Y, rf_reg.predict(X)) )
"""
#Alt yapısında karar ağacı kullanan rassal ormanlar (random forest), şimdiye kadar elde ettiğimiz
yapıya çok benzer şekilde, sklearn kütüphanesi içerisinden bir sınıf olarak RandomForestRegressor
eklemiş (import) ve bu sınıftan da ürettiğimiz nesne ile fit() ve predict() metotlarını kullanarak
makine öğrenmesini gerçekleştirmiştir.
"""