# Gerekli kütüphaneleri içe aktar
import xgboost as xgb
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.metrics import accuracy_score
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
import warnings
warnings.filterwarnings("ignore")
# VERİ SETİ YÜKLE
veriler = pd.read_csv("https://bilisimkitabi.com/files/kimyasal_bilesenler_dummy.csv")
#NDF,ADF,ADL,CP,Ash,CT,HarvestTime
print(veriler.head())
print(veriler.shape)
print(veriler.describe())
print(veriler.describe(exclude=[np.number]))
# Kategorik sütunları sayısal değerlere dönüştür
'''
le = LabelEncoder()
for col in veriler.select_dtypes(include=['object']).columns:
veriler[col] = le.fit_transform(veriler[col])
'''
le = LabelEncoder()
veriler['HarvestTime'] = le.fit_transform(veriler['HarvestTime'])
# Bağımsız ve bağımlı değişkenleri ayır
X = veriler.drop('HarvestTime', axis=1)
y = veriler['HarvestTime']
# Veriyi eğitim ve test setlerine ayır
seed = 7
test_size = 0.33
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=test_size, random_state=seed)
#Modelde kullanılabilecek parametreler tanımlanmıştır.
parameters = {
'n_estimators': [100, 500],
'subsample': [0.8, 1.0],
'gamma' : [0,1,5],
'max_depth': [3, 4, 5],
'learning_rate': [0.1, 0.3]}
# #GridSearch ile tüm olası senaryolardaki modeller kurulacaktır.
model = xgb.XGBClassifier()
model_cv = GridSearchCV(model, parameters, cv = 3, n_jobs = -1, verbose = 2)
model_cv.fit(X_train, y_train)
#En yüksek tahmin oranını veren parametreler gösterilmiştir.
best = model_cv.best_params_
best
#Model tekrar en iyi tahmin oranını veren parametreler ile öğrenim sürecine girecektir.
xgboost = xgb.XGBClassifier(best)
xgb_tuned = xgboost.fit(X_train,y_train)
# Test seti üzerinde tahmin yap
y_pred = xgb_tuned.predict(X_test)
# Doğruluk oranını hesapla
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy: %.2f%%" % (accuracy * 100.0))
#CONFUSION MATRİX-HATA MATRİSİ
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test,y_pred)
print(cm)
numeric_prediction = xgb_tuned.predict([[42,36,6,19,8,11]])
class_prediction = le.inverse_transform(numeric_prediction) # Sayısal tahmini sınıf ismine dönüştür
print(numeric_prediction, class_prediction) # Sınıf ismi olarak tahmini yazdırır
XGBoost
0 Beğeni
28 okunma