Tennis Player Prediction

# -*- coding: utf-8 -*-
"""
Created on Mon Sep 14 13:43:24 2020

@author: yazılım
"""


"""

Batuhan

"""


import numpy as num
import csv
import math
from sklearn.svm import SVC
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.metrics import mean_squared_error, r2_score, accuracy_score
import numpy as np

"""

1-)

"""

df = pd.read_csv("Grand-slams-men-2013.csv",sep=",")

df =df[['ACE.1', 'ACE.2', 'Result']]

#okunamayan değerleri siliyorum

df = df.dropna()

df


"""

2-)

"""


y = df[["Result"]]
X = df.drop(["Result"], axis = 1)
X_train, X_test, y_train, y_test = train_test_split(X, 
                                                    y, 
                                                    test_size=0.30, 
                                                    random_state=42)

#Hepsinin skoruna bakıyorum

liste=[]
kernel_icerik=["linear","poly","rbf"]
sayac=0
while 1:
    if sayac !=3:
        svm_model = SVC(gamma="auto",kernel = kernel_icerik[sayac] ).fit(X_train, y_train)
        
        y_pred = svm_model.predict(X_test)
        
        accuracy_score(y_test, y_pred)
        print("%s skoru: %s"%(kernel_icerik[sayac],accuracy_score(y_test, y_pred)))
        liste_eklemesi=("%s skoru: %s"%(kernel_icerik[sayac],accuracy_score(y_test, y_pred)))
        liste.append(liste_eklemesi)
        sayac=sayac+1
    else:
        break


# en iyi sonuç hangisinde çıkar onu anlamak için gridsearchCV yapıyorum

svm = SVC()

svm_params = {"gamma": ["auto","scale","auto_deprecated"], "kernel": ["linear","rbf","poly"]}

svm_cv_model = GridSearchCV(svm, svm_params, cv = 10, n_jobs = -1, verbose = 2).fit(X_train, y_train)

svm_cv_model.best_score_

svm_cv_model.best_params_

print("en iyi gamma değeri:%s, en iyi kernel:%s "%(svm_cv_model.best_params_["gamma"],svm_cv_model.best_params_["kernel"]))

# en uygun sonucu bu verecek
svm_tuned = SVC(gamma=svm_cv_model.best_params_["gamma"], kernel = svm_cv_model.best_params_["kernel"]).fit(X_train, y_train)

y_pred = svm_tuned.predict(X_test)

accuracy_score(y_test, y_pred)
for i in liste:
    print(i)
print("en iyi sonuç skoru: %s"% accuracy_score(y_test, y_pred))



"""
TAHMİN

"""



oyuncu = pd.read_csv("Grand-slams-men-2013.csv",sep=",")
df

liste_metodlu_linear=[]
liste_metodlu_poly=[]
liste_metodlu_rbf=[]
kernel_icerik=["linear","poly","rbf"]

linear_1_kazandi=[]
linear_0_kazandi=[]
sayac1=0
sayac2=1
svm_model_linear = SVC(gamma="auto",kernel = "linear" ).fit(X_train, y_train)
while 1:
    if sayac2 != 240:
            get= df[sayac1:sayac2]
            x1=list(get["ACE.1"])[0]
            x2=list(get["ACE.2"])[0]
            
            oyuncu_sec= oyuncu[sayac1:sayac2]
            oyuncu1=list(oyuncu_sec['Player1'])[0]
            oyuncu2=list(oyuncu_sec['Player2'])[0]
            
            x_degerler = np.array([[str(x1),str(x2)]])
            #print("x_yeni: {}".format(x_degerler.shape))
            
            prediction = svm_model_linear.predict(x_degerler)
            #print("tahmin: {}".format(prediction))
            #print("tahmin sonucu: {}".format(prediction))
        
            
            print("player 1:%s, player 2:%s, result:%s"%(oyuncu1,oyuncu2,prediction[0]))
            if prediction[0] == 1:
                linear_1_kazandi.append(prediction[0])
            elif prediction[0] == 0:
                linear_0_kazandi.append(prediction[0])
            liste_metodlu_linear.append(("player 1:%s, player 2:%s, result:%s"%(oyuncu1,oyuncu2,prediction[0])))
            sayac1=sayac1+1
            sayac2=sayac2+1
    else:
        break

sayac1=0
sayac2=1
svm_model_poly = SVC(gamma="auto",kernel = "poly" ).fit(X_train, y_train)
while 1:
    if sayac2 != 240:
            get= df[sayac1:sayac2]
            x1=list(get["ACE.1"])[0]
            x2=list(get["ACE.2"])[0]
            
            oyuncu_sec= oyuncu[sayac1:sayac2]
            oyuncu1=list(oyuncu_sec['Player1'])[0]
            oyuncu2=list(oyuncu_sec['Player2'])[0]
            
            x_degerler = np.array([[str(x1),str(x2)]])
            #print("x_yeni: {}".format(x_degerler.shape))
            
            prediction = svm_model_poly.predict(x_degerler)
            #print("tahmin: {}".format(prediction))
            #print("tahmin sonucu: {}".format(prediction))
        
            
            print("player 1:%s, player 2:%s, result:%s"%(oyuncu1,oyuncu2,prediction[0]))
            liste_metodlu_poly.append(("player 1:%s, player 2:%s, result:%s"%(oyuncu1,oyuncu2,prediction[0])))
            sayac1=sayac1+1
            sayac2=sayac2+1
    else:
        break   

sayac1=0
sayac2=1
svm_model_rbf = SVC(gamma="auto",kernel = "rbf" ).fit(X_train, y_train)
while 1:
    if sayac2 != 240:
            get= df[sayac1:sayac2]
            x1=list(get["ACE.1"])[0]
            x2=list(get["ACE.2"])[0]
            
            oyuncu_sec= oyuncu[sayac1:sayac2]
            oyuncu1=list(oyuncu_sec['Player1'])[0]
            oyuncu2=list(oyuncu_sec['Player2'])[0]
            
            x_degerler = np.array([[str(x1),str(x2)]])
            #print("x_yeni: {}".format(x_degerler.shape))
            
            prediction = svm_model_rbf.predict(x_degerler)
            #print("tahmin: {}".format(prediction))
            #print("tahmin sonucu: {}".format(prediction))
        
            
            print("player 1:%s, player 2:%s, result:%s"%(oyuncu1,oyuncu2,prediction[0]))
            
            liste_metodlu_rbf.append(("player 1:%s, player 2:%s, result:%s"%(oyuncu1,oyuncu2,prediction[0])))
            sayac1=sayac1+1
            sayac2=sayac2+1
    else:
        break   


while 1:
            
        secim=int(input("1-) linear,2-) poly,3-) rbf,4-) çıkış:"))
        if secim==1:
            for i in liste_metodlu_linear:
                print(i)
        elif secim==2:
            for i in liste_metodlu_poly:
                print(i)
        elif secim==3:
            for i in liste_metodlu_rbf:
                print(i)
        elif secim==4:
            break

Bir yanıt yazın