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()

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.

Ancak biz problemi daha basitleştirerek aşağıdaki gibi bir ilişki olacağını varsayıyoruz.
Bu şekilde de implement edeceğiz.

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.

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ç:

Ş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

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()
Merhaba, boston verisine ulaşamıyorum. İnternette küçük bi gezinti yaptığımda da karşıma çıkmadı. Mümkünse veriyi alabilir miyim?
BeğenBeğen
https://github.com/ywchiu/rcookbook/tree/master/chapter8
BeğenBeğen
HousesDataset verilmiş olan data link bozuk güncellenmesi mümkün mü acaba
BeğenBeğen
https://github.com/ywchiu/rcookbook/tree/master/chapter8
BeğenBeğen