├── Header-photo.png ├── datasets ├── salaries.csv ├── sales.csv └── missing_values.csv ├── README.md ├── polynomial-regession.py ├── svr-decision_Tree-random_Forest.py ├── linear-regression.py └── multiple-regression.py /Header-photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/selmanbaskaya/Machine-Learning-with-Python/HEAD/Header-photo.png -------------------------------------------------------------------------------- /datasets/salaries.csv: -------------------------------------------------------------------------------- 1 | title,education level,salary 2 | Cayci,1,2250 3 | Sekreter,2,2500 4 | Uzman Yardimcisi,3,3000 5 | Uzman,4,4000 6 | Proje Yoneticisi,5,5500 7 | Sef,6,7500 8 | Mudur,7,10000 9 | Direktor,8,15000 10 | C-level,9,25000 11 | CEO,10,50000 12 | -------------------------------------------------------------------------------- /datasets/sales.csv: -------------------------------------------------------------------------------- 1 | Months,Sales 2 | 8,19671.5 3 | 10,23102.5 4 | 11,18865.5 5 | 13,21762.5 6 | 14,19945.5 7 | 19,28321 8 | 19,30075 9 | 20,27222.5 10 | 20,32222.5 11 | 24,28594.5 12 | 25,31609 13 | 25,27897 14 | 25,28478.5 15 | 26,28540.5 16 | 29,30555.5 17 | 31,33969 18 | 32,33014.5 19 | 34,41544 20 | 37,40681.5 21 | 37,4697 22 | 42,45869 23 | 44,49136.5 24 | 49,50651 25 | 50,56906 26 | 54,54715.5 27 | 55,52791 28 | 59,58484.5 29 | 59,56317.5 30 | 64,61195.5 31 | 65,60936 32 | -------------------------------------------------------------------------------- /datasets/missing_values.csv: -------------------------------------------------------------------------------- 1 | country,height,weight,age,gender 2 | tr,130,30,10,m 3 | tr,125,36,11,m 4 | tr,135,34,10,f 5 | tr,133,30,9,f 6 | tr,129,38,12,m 7 | tr,180,90,30,m 8 | tr,190,80,25,m 9 | tr,175,90,35,m 10 | tr,177,60,22,f 11 | us,185,105,33,m 12 | us,165,55,27,f 13 | us,155,50,44,f 14 | us,160,58,,f 15 | us,162,59,41,f 16 | us,167,62,55,f 17 | fr,174,70,47,m 18 | fr,193,90,,m 19 | fr,187,80,27,m 20 | fr,183,88,28,m 21 | fr,159,40,29,f 22 | fr,164,66,32,f 23 | fr,166,56,42,f 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Machine Learning with Python 2 | 3 | ![](Header-photo.png) 4 | 5 | ## Prediction 6 | - [X] Simple Linear Regression 7 | - [X] Multiple Linear Regression 8 | - [X] Polynomial Regression 9 | - [X] Support Vector Regression 10 | - [X] Decision Tree 11 | - [X] Random Forest 12 | 13 | ## Classification 14 | - [ ] Logistic Regression 15 | - [ ] K-NN 16 | - [ ] Support Vector Machine 17 | - [ ] Naive Bayes 18 | - [ ] Decision Tree 19 | - [ ] Random Forest 20 | 21 | ## Clustering 22 | - [ ] K-Means 23 | - [ ] APriori 24 | - [ ] Eclat -------------------------------------------------------------------------------- /polynomial-regession.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | Created on Sun Sep 13 16:43:17 2020 4 | 5 | @author: Selman 6 | """ 7 | 8 | """ Libraries """ 9 | #Installing Libraries 10 | import pandas as pd 11 | import matplotlib.pyplot as plt 12 | """ Libraries End""" 13 | 14 | """ Code Section """ 15 | #Data Upload 16 | data = pd.read_csv('datasets/salaries.csv') 17 | print(data) 18 | 19 | #DataFrame Slicing, ünvanları ve maaşları ayrı değişkenlere alıyoruz. 20 | x = data.iloc[:, 1:2] 21 | y = data.iloc[:, 2:] 22 | 23 | #NumPy transform 24 | X = x.values 25 | Y = y.values 26 | 27 | #Linear Regression 28 | from sklearn.linear_model import LinearRegression 29 | lr = LinearRegression() 30 | lr.fit(X, Y) 31 | 32 | #x'e denk gelen y değerlerini grafik üzerinde gösteriyoruz, anlaşılabilirliği artırmak için renk veriyoruz. 33 | plt.scatter(X, Y, color = 'brown') 34 | #tahmin doğrumuzu grafik üzerinde çizdiriyoruz 35 | plt.plot(x, lr.predict(X), color = 'blue') 36 | plt.show() 37 | 38 | ''' 39 | Polynomial Regression - degree = 2 40 | PolynomialFeatures ile herhangi bir sayıyı polinomal olarak ifade edebiliriz. 41 | ''' 42 | from sklearn.preprocessing import PolynomialFeatures 43 | #2.dereceden bir polinom oluşturuyoruz. 44 | pr = PolynomialFeatures(degree = 2) 45 | 46 | x_p = pr.fit_transform(X) 47 | print(x_p) 48 | 49 | ''' 50 | 2.dereceye dönüşüm yaotık eğittik ve yeni grafiğimizi çizdiriyoruz, ilk grafiğimize farkla çok daha iyi bir sonuç 51 | almış olduk, aynı işlemleri dereceyi 4 yaparak denediğimizde ise neredeyse birebir aynı noktalardan geçtiğini 52 | görebiliriz. Bu tabii ki her model için aynı sonucu vermez, problemleriniz de bunları deneyerek farkları görebilirsiniz 53 | ''' 54 | lr_2 = LinearRegression() 55 | lr_2.fit(x_p, y) 56 | plt.scatter(X, Y, color = 'brown') 57 | plt.plot(x, lr_2.predict(pr.fit_transform(X)), color = 'blue') 58 | plt.show() 59 | 60 | #Polynomial Regression - degree = 4 61 | from sklearn.preprocessing import PolynomialFeatures 62 | pr_2 = PolynomialFeatures(degree = 4) 63 | 64 | x_p_2 = pr_2.fit_transform(X) 65 | print(x_p_2) 66 | 67 | lr_3 = LinearRegression() 68 | lr_3.fit(x_p_2, y) 69 | plt.scatter(X, Y, color = 'brown') 70 | plt.plot(x, lr_3.predict(pr_2.fit_transform(X)), color = 'blue') 71 | plt.show() 72 | -------------------------------------------------------------------------------- /svr-decision_Tree-random_Forest.py: -------------------------------------------------------------------------------- 1 | """ 2 | @author: Selman 3 | """ 4 | 5 | """ Libraries """ 6 | #Installing Libraries 7 | import numpy as np 8 | import matplotlib.pyplot as plt 9 | import pandas as pd 10 | """ Libraries End""" 11 | 12 | """ Code Section """ 13 | #Data Upload 14 | veriler = pd.read_csv('datasets/salaries.csv') 15 | 16 | #DataFrame Slicing 17 | x = veriler.iloc[:,1:2] 18 | y = veriler.iloc[:,2:] 19 | X = x.values 20 | Y = y.values 21 | 22 | #linear regression 23 | from sklearn.linear_model import LinearRegression 24 | lin_reg = LinearRegression() 25 | lin_reg.fit(X,Y) 26 | 27 | plt.scatter(X,Y,color='red') 28 | plt.plot(x,lin_reg.predict(X), color = 'blue') 29 | plt.show() 30 | 31 | #polynomial regression 32 | from sklearn.preprocessing import PolynomialFeatures 33 | poly_reg = PolynomialFeatures(degree = 2) 34 | x_poly = poly_reg.fit_transform(X) 35 | print(x_poly) 36 | lin_reg2 = LinearRegression() 37 | lin_reg2.fit(x_poly,y) 38 | plt.scatter(X,Y,color = 'red') 39 | plt.plot(X,lin_reg2.predict(poly_reg.fit_transform(X)), color = 'blue') 40 | plt.show() 41 | 42 | from sklearn.preprocessing import PolynomialFeatures 43 | poly_reg = PolynomialFeatures(degree = 4) 44 | x_poly = poly_reg.fit_transform(X) 45 | print(x_poly) 46 | lin_reg2 = LinearRegression() 47 | lin_reg2.fit(x_poly,y) 48 | plt.scatter(X,Y,color = 'red') 49 | plt.plot(X,lin_reg2.predict(poly_reg.fit_transform(X)), color = 'blue') 50 | plt.show() 51 | 52 | #predicts 53 | 54 | print(lin_reg.predict([[11]])) 55 | print(lin_reg.predict([[6.6]])) 56 | 57 | print(lin_reg2.predict(poly_reg.fit_transform([[6.6]]))) 58 | print(lin_reg2.predict(poly_reg.fit_transform([[11]]))) 59 | 60 | ''' 61 | Support Vector'lerin aykırı verilere karşı bağımlılığı yok dolayısıyla modelimizi daha doğru eğitebilmek adına 62 | data scaling işlemleri yapmamız gerekiyor. 63 | ''' 64 | #data scaling 65 | from sklearn.preprocessing import StandardScaler 66 | 67 | sc1=StandardScaler() 68 | 69 | x_olcekli = sc1.fit_transform(X) 70 | 71 | sc2=StandardScaler() 72 | y_olcekli = np.ravel(sc2.fit_transform(Y.reshape(-1,1))) 73 | 74 | ''' 75 | SVR 76 | svr'ın kernel parametresi için rbf kullanacağız, polynomial linear yapabilirsiniz, bunları daha ayrıntılı öğrenmek 77 | için sklearn dökümantasyonlarını kesinlikle incelemenizi öneririm. 78 | fit fonksiyonunu ölçeklendirdiğimiz veriler üzerinden yapıyoruz 79 | ''' 80 | from sklearn.svm import SVR 81 | 82 | svr_reg = SVR(kernel='rbf') 83 | svr_reg.fit(x_olcekli,y_olcekli) 84 | 85 | plt.scatter(x_olcekli,y_olcekli,color='red') 86 | plt.plot(x_olcekli,svr_reg.predict(x_olcekli),color='blue') 87 | 88 | #Öğrenme işlemleri biten modelimizi yeni test değerleri vererek tekrardan test ediyoruz. 89 | print(svr_reg.predict([[11]])) 90 | print(svr_reg.predict([[6.6]])) 91 | 92 | ''' 93 | Decision Tree 94 | dt'nin random_state parametresi için 0 kullanacağız, random-state'i linear reg. konusunda anlatmıştık. 95 | ''' 96 | from sklearn.tree import DecisionTreeRegressor 97 | r_dt = DecisionTreeRegressor(random_state=0) 98 | r_dt.fit(X,Y) 99 | Z = X + 0.5 100 | K = X - 0.4 101 | plt.scatter(X,Y, color='red') 102 | plt.plot(x,r_dt.predict(X), color='blue') 103 | 104 | plt.plot(x,r_dt.predict(Z),color='green') 105 | plt.plot(x,r_dt.predict(K),color='yellow') 106 | print(r_dt.predict([[11]])) 107 | print(r_dt.predict([[6.6]])) 108 | 109 | ''' 110 | Random Forest 111 | rf'nin random_state parametresi için 0 kullanacağız, random-state'i linear reg. konusunda anlatmıştık. 112 | n_estimators parametresi ise kaç tane decision tree çizeceğini söylemiş oluyoruz. (random forest dec. tree algoritmaları 113 | ile çalışıyor). 114 | ''' 115 | from sklearn.ensemble import RandomForestRegressor 116 | rf_reg=RandomForestRegressor(n_estimators = 10,random_state=0) 117 | rf_reg.fit(X,Y.ravel()) 118 | 119 | print(rf_reg.predict([[6.6]])) 120 | 121 | plt.scatter(X,Y,color='red') 122 | plt.plot(X,rf_reg.predict(X),color='blue') 123 | 124 | plt.plot(X,rf_reg.predict(Z),color='green') 125 | plt.plot(x,r_dt.predict(K),color='yellow') 126 | plt.show() 127 | 128 | -------------------------------------------------------------------------------- /linear-regression.py: -------------------------------------------------------------------------------- 1 | """ 2 | @author: Selman 3 | """ 4 | 5 | """ Libraries """ 6 | 7 | """ 8 | Kütüphanelerin Yüklenmesi 9 | as pd veya as plt yazarak import edilen kütüphaneleri ileride daha kısa isimler ile kullanabiliyor olacağız. 10 | """ 11 | import pandas as pd 12 | """ Libraries End""" 13 | 14 | """ Code Section """ 15 | 16 | """ 17 | Veri Ön İşleme 18 | 19 | Veri Setinin Yüklenmesi 20 | Veri seti kodlarımızı yazdığımız dosya ile aynı dizinde ise direkt olarak veri setinin ismini yazarak 21 | yükleme işlemini gerçekleştirebiliriz. 22 | data = pd.read_csv('sales.csv') 23 | """ 24 | 25 | data = pd.read_csv('datasets/sales.csv') 26 | print(data) 27 | """ 28 | Eğer ki veri setimiz kod dosyamız ile aynı dizinde değilse aşağıdaki adımları takip ederek veri setimizi 29 | yükleyebiliriz (Her işletim sistemi için path'in yazımı aşağıda gösterilmiştir); 30 | 31 | data = pd.read_csv('Users/username/.../file_name.csv') (Mac) 32 | data = pd.read_csv('C:\\Users\...\file_name.csv') (Windows) 33 | data = pd.read_csv('home/users/.../file_name.csv') (Linux) 34 | 35 | 36 | pandas'ın dataframe özelliğinden yararlanarak data değişkeninin içerisinden istediğimiz bir kolunun bilgilerini 37 | farklı bir değişken içerisine çekebiliriz. 38 | """ 39 | months = data[['Months']] 40 | print(months) 41 | 42 | sales = data[['Sales']] 43 | print(sales) 44 | """ 45 | months ve sales kolonlarını tek bir değişken içerisinde tutmak da tabii ki mümkün; 46 | months_sales = data[['Months', 'Sales']] şeklinde yazarak tek bir değişken ile de verileri tutabiliriz. 47 | 48 | Kolondaki verilerimizi array değil de dataframe formatında tutmak istersek iloc komutunu kullanmamız gerekiyor. 49 | """ 50 | sales_2 = data.iloc[:,1:].values 51 | print(sales_2) 52 | 53 | #Veri Setinin Train ve Test Olarak Bölünmesi 54 | from sklearn.model_selection import train_test_split 55 | """ 56 | Veri setimizi bölmek için 4 değişkene ihtiyacımız var; 57 | x_train ve y_train değişkenlerini eğitim için x_test ve y_test değişkenlerini eğitim sonunda model'i test etmek 58 | için kullanıyor olacağız. x'ler bizim için bağımsız değişken iken y'ler x'lere bağlı değişkenlerdir. 59 | veri setini bölmek için kullanılan ilk parametre bağımsız değişkenlerimizi ikinci parametre ise bağımlı değişkenlerimizi 60 | temsil etmektedir. test_size parametresi ise veri setinin yüzde kaçını test için ayıracağımızı belirtir, son olarak 61 | random_state parametresi ise kodları tekrar tekrar çalıştırdığımızda bölünen verilerin sabit kalması için kullanılır. 62 | """ 63 | x_train, x_test, y_train, y_test = train_test_split(months, sales, test_size = 0.33, random_state = 0) 64 | 65 | """ 66 | Özellik Ölçeklendirme 67 | Verilerin birbirlerine olan uzaklık değerlerini daha standart bir hale getirmek için kullanıyoruz. 68 | StandartScaler işleminde önce Months kolununda 11,25,34,54,64 gibi birbirinden uzak değerler vardı 69 | StandartScaler ile bu değerleri -1.6 ve 1.3 arasında kadar düşürmüş olduk. 70 | """ 71 | from sklearn.preprocessing import StandardScaler 72 | sc = StandardScaler() 73 | 74 | X_train = sc.fit_transform(x_train) 75 | X_test = sc.fit_transform(x_test) 76 | 77 | Y_train = sc.fit_transform(y_train) 78 | Y_test = sc.fit_transform(y_test) 79 | 80 | #Model Oluşturma 81 | from sklearn.linear_model import LinearRegression 82 | lr = LinearRegression() 83 | #x_train ve y_train verilerine bakarak bir ilişki kurmaya çalışıyoruz. Bunun içinde fit fonksiyonunu kullanıyoruz. 84 | lr.fit(X_train, Y_train) 85 | 86 | ''' 87 | predict fonksiyonuna x_test verilerini yollayarak şuana kadar öğrendiği kadarı ile bir tahmin yapmasını istiyoruz. 88 | Sizinde fark ettiğiniz gibi predict yaparken hiçbir şekilde y_test verisini vermiyoruz, amacımız modelin train setleri 89 | ile öğrendiklerini x_test üzerinde uygulayarak tahminler üretmesii. 90 | print fonksiyonu ile y_pred ve y_test değişkenlerini ekrana yazdırıp modelimizin ne kadar başarılı olduğuna bakabiliriz 91 | ''' 92 | y_pred = lr.predict(X_test) 93 | print("Tahmin edilenler - StandartScaler Uygulanan") 94 | print(y_pred) 95 | print("Gerçek değerler - StandartScaler Uygulanan") 96 | print(Y_test) 97 | 98 | ''' 99 | Yukarıda aldığımız sonuçlar StandartScaler'dan geçtiği için belki sizler için anlamlı gelmeyebilir, normal değerler 100 | üzerinden predict işlemlerini aşağıdaki şekilde yapabiliriz. 101 | ''' 102 | lr.fit(x_train, y_train) 103 | y_pred = lr.predict(x_test) 104 | print("Tahmin edilenler - StandartScaler Uygulanmayan") 105 | print(y_pred) 106 | print("Gerçek değerler - StandartScaler Uygulanmayan") 107 | print(y_test) 108 | 109 | ''' 110 | Görselleştirme 111 | Verileri görselleştirmeden önce grafiğin anlaşılabilir olması adına verileri sort_index ile sıralıyoruz. Sizler 112 | çalışırken her iki türlü de deneyerek ne demek istediğimi çok daha iyi anlamış olacaksınız. 113 | plot fonksiyonuna x ve y train verilerimizi vererek aylık satış dağılımlarını grafik üzerinden görebiliyoruz. 114 | plot fonksiyonuna x ve predict x test verilerimizi vererek modelimizin doğrusunu görmüş oluruz. 115 | grafiğimize title ile grafik başlığı, xlabel ile x eksenini başlığı ve ylabel ile de y ekseni başlığını eklemiş oluruz. 116 | ''' 117 | import matplotlib.pyplot as plt 118 | 119 | x_train = x_train.sort_index() 120 | y_train = y_train.sort_index() 121 | 122 | plt.plot(x_train, y_train) 123 | plt.plot(x_test, lr.predict(x_test)) 124 | plt.title("sales by month") 125 | plt.xlabel("months") 126 | plt.ylabel("sales") 127 | 128 | """ Code Sectio End""" 129 | -------------------------------------------------------------------------------- /multiple-regression.py: -------------------------------------------------------------------------------- 1 | """ 2 | @author: Selman 3 | """ 4 | 5 | """ Libraries """ 6 | 7 | """ 8 | Installing Libraries 9 | Her adımda bir önceki kod dosyasında açıkladığımız kısımları tekrar açıklamadan ilerleyeceğiz, sizleri de ezberden 10 | uzak tutmak adına daha iyi bir yöntem olacağını düşünüyorum. 11 | Ve başlıkları ingilizce anlamları ile yazarak biraz da genel kullanımlara aşina olmanızı istiyorum. 12 | """ 13 | import pandas as pd 14 | import numpy as np 15 | import matplotlib.pyplot as plt 16 | """ Libraries End""" 17 | 18 | """ Code Section """ 19 | #Data Preprocessing 20 | 21 | #Data Upload 22 | data = pd.read_csv('datasets/missing_values.csv') 23 | print(data) 24 | 25 | country = data.iloc[:,0:1].values 26 | print(country) 27 | 28 | ''' 29 | sci - kit learn (sklearn) 30 | Veri setimizi inceleyecek olursanız bazı satırlarda yaş değerinin boş olduğunu göreceksiniz, bu ise bizim karşılaşmak 31 | istemediğimiz bir durumdur. sklearn'ün içerisinden SimpleImputer ile değeri olmayan alanlara atamalar yapacağız. 32 | Bu gibi durumlarda birdem fazla seçenek kullanılabilir, en büyük, en küçük, ortalama veya 0 1 gibi rastgele 33 | değerler atanabilir, biz bu problemi çözmek için ortalama değerini kullanacağınız. 34 | 35 | ''' 36 | from sklearn.impute import SimpleImputer 37 | 38 | imputer = SimpleImputer(missing_values = np.nan, strategy = 'mean') 39 | age = data.iloc[:,1:4].values 40 | print(age) 41 | 42 | imputer = imputer.fit(age[:,1:4]) 43 | age[:,1:4] = imputer.transform(age[:,1:4]) 44 | print(age) 45 | 46 | ''' 47 | sci - kit learn (sklearn) 48 | Kategorik veri tiplerinde dönüşüm 49 | Country kolonunun altında üç farklı ülke ismi var fakat bizim veri setinde işlem yapabilmemiz için bunları sayısal 50 | değerlere dönüştürmemiz gerekiyor. 51 | Label Encoding işlemi her ülke için 1'den başlarak sayısal değer atamak için kullanılır. Fakat bu da istenilen bir 52 | durum değil çünkü tr için bir us için 2 değerleri geldi, modelimiz öğrenmeye başlarken bu iki değeri kat farkı olarak 53 | düşünebilir ve bu şekilde düşünerek modeli eğitmesi yanlış olacaktır. Bundan kurtulmak için ise onehotencoding yapacağız. 54 | Label enc. sonucu -> 11...1 22...2 33...3 şeklinde oldu. 55 | ''' 56 | from sklearn import preprocessing 57 | label_encoding = preprocessing.LabelEncoder() 58 | country[:,0] = label_encoding.fit_transform(data.iloc[:,0]) 59 | print(country) 60 | 61 | ''' 62 | OneHotEncoding tr us fr verilerini etiket haline getirir ve her satır için 0 ve 1 değerlerini girer. 63 | ohe ile yeni durum şu şekilde; 64 | tr us fr 65 | 1 0 0 66 | 0 1 0 67 | 0 0 1 68 | haline dönüştü. 69 | ''' 70 | one_hot_encoding = preprocessing.OneHotEncoder() 71 | country = one_hot_encoding.fit_transform(country).toarray() 72 | print(country) 73 | 74 | #country için yaptığımız label encoder ve onehotencoder işlemlerini gender kolonu için de yapacağız. 75 | gen = data.iloc[:,-1:].values 76 | print(gen) 77 | 78 | #Label Encoding işlemi her değer için 1'den başlarak sayısal değer atamak için kullanılır. 79 | from sklearn import preprocessing 80 | label_encoding = preprocessing.LabelEncoder() 81 | gen[:,-1] = label_encoding.fit_transform(data.iloc[:,-1]) 82 | print(gen) 83 | 84 | #Kolon başlıklarını etiketlere taşır, her etikete 1 veya 0 değeri verir. 85 | one_hot_encoding = preprocessing.OneHotEncoder() 86 | gen = one_hot_encoding.fit_transform(gen).toarray() 87 | print(gen) 88 | 89 | 90 | #Numpy dizilerinin DataFrame'e dönüştürülmesi işlemleri. Kolon başlığı ve index ekleyerek DataFrame oluşturuluyor. 91 | result_counrty = pd.DataFrame(data = country, index = range(22), columns = ['fr', 'tr', 'us']) 92 | print(result_counrty) 93 | 94 | result_hwa = pd.DataFrame(data = age, index = range(22), columns = ['height', 'weight', 'age']) 95 | print(result_hwa) 96 | 97 | gender = data.iloc[:,-1].values 98 | print(gender) 99 | 100 | ''' 101 | veri setimize gender kolonunu eklerken tek bir sütunu almalıyız, hatırlarsanız yukarıda onehotencoding yaparken 102 | erkek veya kadın olması durumu için iki ayrı kolon kullanmıştık, fakat birinin değerini bilmemiz diğer durumu 103 | tahmin etmemize yaradığı için tek bir kolon kullanmamız yeterli olacaktır. 104 | ''' 105 | result_gender = pd.DataFrame(data = gen[:, : 1], index = range(22), columns = ['gender']) 106 | print(result_gender) 107 | 108 | #DataFrame'leri birleştirme işlemi. 109 | result = pd.concat([result_counrty, result_hwa], axis = 1) 110 | print(result) 111 | 112 | result2 = pd.concat([result, result_gender], axis = 1) 113 | print(result2) 114 | 115 | #Veriler train ve test için bölündü. 116 | from sklearn.model_selection import train_test_split 117 | x_train, x_test, y_train, y_test = train_test_split(result, result_gender, test_size = 0.33, random_state = 0) 118 | 119 | from sklearn.linear_model import LinearRegression 120 | regressor = LinearRegression() 121 | regressor.fit(x_train, y_train) 122 | 123 | y_pred = regressor.predict(x_test) 124 | 125 | #boyu tahmin etmek istersek bu sefer bağımlı değişken olarak height kolonunu kullanacağız, bunu bir değişkene alalım 126 | height = result2.iloc[:,3:4].values 127 | print(height) 128 | 129 | #daha sonra ise height kolonunun sağında ve solunda kalanları ayrı ayrı alıp bir sonraki adımda concat işlemi yapacağız. 130 | left = result2.iloc[:,:3] 131 | right = result2.iloc[:,4:] 132 | 133 | data_concat = pd.concat([left, right], axis = 1) 134 | 135 | #yemi bir veri seti oluşturmuş olduk aşağıdaki yapı ile de height kolonunu tahmin eden bir model tasarlıyor olacağız. 136 | x_train, x_test, y_train, y_test = train_test_split(data_concat, height, test_size = 0.33, random_state = 0) 137 | 138 | regressor_2 = LinearRegression() 139 | regressor_2.fit(x_train, y_train) 140 | 141 | y_pred_2 = regressor.predict(x_test) 142 | 143 | ''' 144 | Geri Eleme 145 | Her bir değişkenin sistem üzerine bir etkisi vardır. Bazı değişkenlerin sisteme etkisi yüksekken bazılarının azdır. 146 | Sisteme etkisi az olan bağımsız değişkenlerin ortadan kaldırılması daha iyi bir model kurmamıza olanak sağlar. 147 | Backwar d Elimination yöntemini kullanarak daha iyi modeller oluşturabiliriz. 148 | 149 | 1-P değerini seçin ( Genellikle bu değer 0.05 olur) 150 | 2-Tüm bağımsız değişkenleri dahil ettiğiniz bir model kurun 151 | 3-Her bir bağımsız değişkenin p değeri incelenir. Eğer Pdeğeri model için belirlenenden daha büyük ise bu bağımsız değişken modelden çıkarılır. Tekrar çalıştırılır. 152 | 4-Bütün p değerleri belirlediğimiz değerden küçük ise modelimiz hazırdır. 153 | ''' 154 | import statsmodels.api as sm 155 | 156 | #veri setimizin en sonuna veri sayımızın satır sayısı ile aynı olacak yeni bir kolon ekliyoruz ve içerisine 1 yazıyoruz 157 | X = np.append(arr = np.ones((22, 1)).astype(int), values = data, axis = 1) 158 | 159 | #her bir kolonun height üzerindeki etkisini ölçmek için bu yapıyı kuruyoruz. 160 | X_list = data_concat.iloc[:,[0,1,2,3,4,5]].values 161 | X_list = np.array(X_list, dtype = float) 162 | #sm.OLS istatistiksel değerlerimizi çıkarabilmek için kullanıyoruz. 163 | model = sm.OLS(height, X_list).fit() 164 | print(model.summary()) 165 | 166 | #summary'de x5 in pt değeri en yüksek olduğu için o elenmeli. backwar eli. yöntemine göre. 167 | X_list = data_concat.iloc[:,[0,1,2,3,5]].values 168 | X_list = np.array(X_list, dtype = float) 169 | model = sm.OLS(height, X_list).fit() 170 | print(model.summary()) 171 | 172 | #yeni summary'de eski x6 yeni x5 olanın pt değeri 0.03. kabul edilebilir bir değer fakat onu da görmek istemezsek eleyebiliriz. 173 | X_list = data_concat.iloc[:,[0,1,2,3]].values 174 | X_list = np.array(X_list, dtype = float) 175 | model = sm.OLS(height, X_list).fit() 176 | print(model.summary()) 177 | 178 | """ Code Sectio End""" 179 | --------------------------------------------------------------------------------