2019/09/18

Machine Learning-1(Regression)

*Linear Regression
*Multiple Linear Regression
*Polynomial Linear Regression
Linear Regression
1.Supervised modeldir.
2.Line fit edilen metota linear regression denilir.
3.Matamatiksel fomülü y=b0+b1*x olarak belirtilir. b0= constant(sabit deger), b1=coeff(kat sayı)
4.Amaç min MSE(mean squared error) elde etmektir.
5.Sklearn'de machine learning algoritmaları mevcuttur.

# Bu örnekte Linear Regression kullanacağım. Örnek dataset olarak model yılına göre,arabaların fiyatını bulmasını
#sağlamak amacıyla kullanımda bulunabilir.

#Öncelikli olarak dataset'imizi load etmemiz gerekiyor. Bunun için pandas kütüphanesinden yararlanacağım.

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df=pd.read_csv("arac.csv")


# dataset'imizden örnek data gösterir. df.head(10) yazarsak ilk 10 kayıtı getirir.
df.head()


#Datasetimiz hakkında bilgi verir.
df.info()

 output:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 17 entries, 0 to 16
Data columns (total 2 columns):
model     17 non-null int64
bedeli    17 non-null int64
dtypes: int64(2)
memory usage: 352.0 bytes

 


# Bu datasetimizi matplotlib kütüphanesini kullanarak görselleştirelim. Bunun için kütüphanemizi import etmemiz gerekiyor.

plt.scatter(df.model,df.bedeli)
plt.xlabel("Model Yılı")
plt.ylabel("Bedeli")
plt.show()




# sklearn kütüphanesi kullanarak line fit dilmesi, b0 ve b1 degerlerinin bulunması gerekmektedir.


from sklearn.linear_model import LinearRegression

linear=LinearRegression()

# Makine öğrenmesi için datamızı numpy formatına dizi formatına dönüştürmemiz lazım.

model=df.model.values.reshape(-1,1)
bedeli=df.bedeli.values.reshape(-1,1)

#Daha sonra da datamızı fit etmemiz gerekiyor.

linear.fit(model,bedeli)


output: LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,
         normalize=False)


#b0 degerini bulmak için
 
b0=linear.intercept_
print("b0 :",b0)
 
output: b0 : [-3271355.38220561]
 

#b1 degerini bulmak için
 
b1=linear.coef_
print("b1 :",b1)
 
output: b1 : [[1673.02267335]]
 

# Artık matamatiksel formülde(y=b0+b1*x) olan tüm degerlerimi biliyorum.
#Yani datasetimin içerisinde olmayan bir model yılını sorduklarında aracın 
bedelinin ne kadar olduğunu söyleyebilirim.
# Örneğin; 2007 model arabanın bedeli ne kadar olur sorusuna cevap verelim;
#          2023 model arabanın bedeli ne kadar olur ?
 
print(linear.predict([[2007]]))
 
print(linear.predict([[2023]]))
 
output: [[86401.12319908]]
[[113169.48597261]]
 

# Line fit edilmiş görselleştirme modeli.
 
array=np.array([df.model]).reshape(-1,1)
plt.scatter(df.model,df.bedeli)
 
 
y_head=linear.predict(array)
plt.plot(array,y_head,color="red")


Multiple Linear Regression
1.Supervised modeldir.
2.Multiple regression y eksenine 1'den farklı degerlerin etki etmesi demektir. Örnegin; araba'nın bedeline yıl etki ederken,aynı zaman da km'sinin de etki etmesidir.
3.Matamatiksel formülü y=b0+b1*x1+b2*x2....+bn*xn şeklindedir.
4.Amaç MSE(mean squared error) elde etmektir.


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
df=pd.read_csv("arac_multiple.csv")
 
df.head()
df.info()
 
output:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 17 entries, 0 to 16
Data columns (total 3 columns):
model     17 non-null int64
bedeli    17 non-null int64
km        17 non-null int64
dtypes: int64(3)
memory usage: 488.0 bytes
 
y=df.bedeli.values.reshape(-1,1)
 
#Datasetimizde araba bedelini etkileyecek olan iki değişkeni alabilmemiz için 
iloc kullanılır. 
#0. ve 2. kolonları al demektir.
x=df.iloc[:,[0,2]].values
print(x)
 
multiple_linear=LinearRegression()
multiple_linear.fit(x,y)
b0=multiple_linear.intercept_
print("b0 :",b0)
print("b1,b2 :",multiple_linear.coef_)
output: 
b0 : [783121.66671321]
b1,b2 : [[-330.29252131   -0.4419189 ]]
# modeli 2007 olup km 85000 olan arabanın bedeli bulma.
print(multiple_linear.predict([[2007,85000]]))
output:
[[82661.46991568]]
Polynomial Linear Regression
1.Supervised modeldir.
2.Polynomial regression değişkenin belli bir zaman sonra sabit kalmasıdır. Örneğin; arabanın bedeli artarken hız'ının belli bir değerde kalması.
3.Matamatiksel formülü. y=b0+b1*x+b2+x^2+....+bn*x^n
4.Amaç MSE(mean squared error) elde etmektir.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
 
df=pd.read_csv("arac_polynomial.csv")
 
df.head()
hiz=df.hiz.values.reshape(-1,1)
bedeli=df.bedeli.values.reshape(-1,1)
 
plt.scatter(bedeli,hiz)
plt.xlabel("Bedeli")
plt.ylabel("Hiz")
plt.show()
from sklearn.preprocessing import PolynomialFeatures
 
# İki değişken üzerinde tahminde bulunacağım için 
degree degerini 3 olarak verdim.
polynomial_linear=PolynomialFeatures(degree=3)
 
bedeli_polynomial=polynomial_linear.fit_transform(bedeli)
#fit
 
linear=LinearRegression()
linear.fit(bedeli_polynomial,hiz)
y_head=linear.predict(bedeli_polynomial)
 
plt.plot(bedeli,y_head,color="red",label="Polynomial")
plt.legend()
plt.show()
İyi Okumalar.

Hiç yorum yok:

Yorum Gönder