Günlük hayatta karşımıza çıkan basit bir konuyu ele alalım. Taşınıyoruz!

Buradan HousesDataset veri setimizi csv dosyası şeklinde indirelim.

Veri Seti Amerika’da San Luis Obispo, Kaliforniya’da yer alan 781 tane eve ait çeşitli bilgileri içeriyor.

Beğendiğimiz evin büyüklüğüne göre fiyatının ne olacağını bilmek istiyoruz.

İlk olarak veri setimizi okuyalım:

1. Yöntem: Veri Setini doğrudan csv ile okumak. Biz bunu kullanmayacağız.

import csv

with open('RealEstate.csv') as csvfile:
    data_set = csv.reader(csvfile, delimiter=',')
    for row in data_set:
        print row[2], "\t", row[5]
        # row[2]  evlerin fiyati
        # row[5]  evlerin buyuklugu
2. Yöntem: Veri Setini NumPy ile okumak.
import csv
import numpy as np

# veri setimizin yuklenmesi ve okunmasi
# sadece price ve size kolonlarini yukluyoruz.
# veri setimiz
data_set = np.loadtxt('RealEstate.csv', delimiter=',', dtype=None, usecols=(2, 5), skiprows=1)

# Sadece ilk 50 tane kayidi aliyoruz.

# Fiyatlar
prices = data_set[:50, 0]/1000

# Buyuklukler
sizes = data_set[:50, 1]
Herhangi bir eksik veri olmadığı için, başka bir işlem yapmamıza gerek yok şimdilik.
Şimdi de verilerimizi görselleştirelim.
import csv
import matplotlib.pyplot as plt

# Ev Fiyatlari - Buyuklukleri Plot una Bakalim.
plt.plot(sizes, prices, 'ro', marker='+', markersize=10)
plt.xlabel('House Sizes (in feet2)')
plt.ylabel('House Prices (in 1000s of dollars)')
plt.show()
 aas.png
Bu plot’tan gördüğümüz gibi evlerin büyüklüklerive fiyatları arasında belirgin bir ilişki var.
 Fiyatlar ve buyuklukler arasındaki beklenen ilişki aşağıdaki gibi olmalıdır.
1.png
Ancak biz problemi daha basitleştirerek aşağıdaki gibi bir ilişki olacağını varsayıyoruz.
Bu şekilde de implement edeceğiz.
2.png
Yukarda gözüktüğü gibi, ev buyukluklerine karşılık gelen fiyatlara uyabilecek bir doğru çizmemiz gerekiyor.
Doğru Denklemi,  y=A+Bx şeklinde ifade edilir.
A ve B katsayılarını rastgele değerler vererek hesaplamak yerine aşağıdaki formul ile hesaplayacağız.
linear regression formula ile ilgili görsel sonucu
import csv
#...
#...
#...
# plt.show()

# y = A + Bx dogrusunu cizdirebilmek icin
# Katsayilarin hesaplanmasi
# Bizim modelimize gore x'ler ev buyuklukleri
# y 'ler ev fiyatlarini temsil etmektedir.
# x --> size
# y --> price

total_y = sum(prices)
total_x = sum(sizes)

total_y_2 = sum(prices * prices)
total_x_2 = sum(sizes * sizes)

total_x_y = sum(prices * sizes)

A = ((total_y * total_x_2) - (total_x * total_x_y)) / ((50 * total_x_2) - (total_x * total_x))
B = ((50 * total_x_y) - (total_x * total_y)) / ((50 * total_x_2) - (total_x * total_x))

# y = A + B * x
x = sizes
y = A + B * x

plt.plot(x, y)

plt.show()
 Doğru denklemini yazdıktan sonra, plot’a doğrumuzu ekledik, ve sonuç:22.png
Şimdi de evin büyüklüğünü bildiğimiz fiyatını tahmin etmeye çalıştımız eve geldi.
import csv
#...
#...
# plt.show()

# fiyatini merak ettigimiz evin buyuklugu
our_house_size = 3300
our_house_price = A + B * our_house_size

plt.plot(our_house_size,our_house_price, color="green", marker="o",markersize=10)

plt.show()

SONUÇ: 809.209,5 Dolar

swq.png
Basit bir tek değişkenli regresyon implement ettik. Kodun tamamı aşağıdadır.

import numpy as np
import matplotlib.pyplot as plt

# veri setimizin yuklenmesi ve okunmasi
# sadece price ve size kolonlarini yukluyoruz.
# veri setimiz
data_set = np.loadtxt('RealEstate.csv', delimiter=',', dtype=None, usecols=(2, 5), skiprows=1)

# Sadece ilk 50 tane kayidi aliyoruz.

# Fiyatlar
prices = data_set[:50, 0]/1000

# Buyuklukler
sizes = data_set[:50, 1]

# Ev Fiyatlari - Buyuklukleri Plot una Bakalim.
plt.plot(sizes, prices, 'ro', marker='+', markersize=10)
plt.xlabel('House Sizes (in feet2)')
plt.ylabel('House Prices (in 1000s of dollars)')
#plt.show()

#...
#...
#...
# plt.show()

# y = A + Bx dogrusunu cizdirebilmek icin
# Katsayilarin hesaplanmasi
# Bizim modelimize gore x'ler ev buyuklukleri
# y 'ler ev fiyatlarini temsil etmektedir.
# x -- size
# y -- price

total_y = sum(prices)
total_x = sum(sizes)

total_y_2 = sum(prices * prices)
total_x_2 = sum(sizes * sizes)

total_x_y = sum(prices * sizes)

A = ((total_y * total_x_2) - (total_x * total_x_y)) / ((50 * total_x_2) - (total_x * total_x))
B = ((50 * total_x_y) - (total_x * total_y)) / ((50 * total_x_2) - (total_x * total_x))

# y = A + B * x
x = sizes
y = A + B * x

plt.plot(x, y)

#plt.show()

# Ev Fiyatlari - Buyuklukleri Plot una Bakalim.
plt.plot(sizes, prices, 'ro', marker='+', markersize=10)
plt.xlabel('House Sizes (in feet2)')
plt.ylabel('House Prices (in 1000s of dollars)')
plt.show()

 

Makine Öğrenmesi: Model Oluşturma ve Maliyet Fonksiyonu

Basit Lineer Regresyon Nedir?