In [129]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model
In [130]:
#Bisiklte kiralama veirlerini yükledik
bisikletKiralama=pd.read_csv("http://bit.ly/2m1hi2j")
In [131]:
#Şimdi elimizdeki özellikleri görmek için ilk 3 satırı yazdıralım....
bisikletKiralama.head(3)
Out[131]:
In [132]:
plt.style.use('seaborn-talk')
plt.scatter(bisikletKiralama['windspeed'], bisikletKiralama['cnt'])
plt.xlabel('Rüzgar Hızı')
plt.ylabel('Kiralama Sayısı')
plt.show()
In [133]:
# Bisiklet kiralamayı etkileyen faktörler nelerdir ?
# cevap :
In [134]:
model1=linear_model.LinearRegression()
count = len(bisikletKiralama.index)
model1.fit(bisikletKiralama['windspeed'].values.reshape(731, 1), bisikletKiralama['cnt'].values.reshape(731, 1))
model1.predict(0.1)
Out[134]:
In [135]:
#Modelinizi ve verinin endisini yazdırınız.
plt.style.use('seaborn-talk')
plt.scatter(bisikletKiralama['windspeed'], bisikletKiralama['cnt'])
plt.plot(bisikletKiralama['windspeed'], model1.predict(bisikletKiralama['windspeed'].values.reshape(count,1)), color='red')
plt.xlabel('Rüzgar Hızı')
plt.ylabel('Kiralama Sayısı')
plt.show()
In [136]:
filter1 = bisikletKiralama['cnt'] > 500
filter2 = bisikletKiralama['windspeed'] < 0.4
bisikletKiralama = bisikletKiralama[(filter1) & (filter2)]
count = bisikletKiralama.count()
In [137]:
plt.style.use('seaborn-talk')
plt.scatter(bisikletKiralama['windspeed'], bisikletKiralama['cnt'])
plt.xlabel('Rüzgar Hızı')
plt.ylabel('Kiralama Sayısı')
plt.show()
In [138]:
# Temizlenmiş verileri kullanarak model2 adında yeni bir model oluşturunuz.
model2=linear_model.LinearRegression()
count = len(bisikletKiralama.index)
model2.fit(bisikletKiralama['windspeed'].values.reshape(count, 1), bisikletKiralama['cnt'].values.reshape(count, 1))
Out[138]:
In [139]:
plt.style.use('seaborn-talk')
plt.scatter(bisikletKiralama['windspeed'], bisikletKiralama['cnt'])
plt.plot(bisikletKiralama['windspeed'], model2.predict(bisikletKiralama['windspeed'].values.reshape(count,1)), color='red')
plt.xlabel('Rüzgar Hızı')
plt.ylabel('Kiralama Sayısı')
plt.show()
Her iki modelin katsayılarını yazdırınız. Aralarında bir fark var mı ? Bu fark rüzgar hızına göre kiralamayı sizce nasıl etkiliyor ?
In [140]:
# İki modelin tahmin ettiği değerler neredeyse aynı. Rüzgar hızı yaklaşık %10 ile kiralama sayısını etkiliyor.
print(model1.coef_, model2.coef_)
In [141]:
# Sadece anlamaya çalışınız bu satırlar toplam hatayı hesaplamanıza yardımcı olacak
#bisKiralamaClear[:1]
#lets show them how to predict single data
print(bisikletKiralama[:1]['windspeed'].values.reshape(-1,1),bisikletKiralama[:1]['cnt'])
#model2.predict(bisikletKiralama[:1]['windspeed'].values.reshape(-1,1))
In [142]:
rssSingle=(bisikletKiralama[:1]['cnt'].values.reshape(-1,1) - model2.predict(bisikletKiralama[:1]['windspeed'].values.reshape(-1,1))) ** 2
In [143]:
#RSS for single point
rssSingle
Out[143]:
In [144]:
#Şimdi sizin sıranız. Toplam hatayı hesaplayınız.
In [145]:
RSS = ((bisikletKiralama[:]['cnt'].values.reshape(-1,1) - model2.predict(bisikletKiralama[:]['windspeed'].values.reshape(-1,1))) ** 2).sum()
RSS
Out[145]: