{"id":38388,"date":"2026-01-30T05:40:43","date_gmt":"2026-01-30T02:40:43","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=38388"},"modified":"2026-01-30T05:40:43","modified_gmt":"2026-01-30T02:40:43","slug":"python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/","title":{"rendered":"Python ve Scikit-learn ile Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 Nas\u0131l Olu\u015fturulur?"},"content":{"rendered":"<p><body><\/p>\n<h2>Python ve Scikit-learn ile Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 Nas\u0131l Olu\u015fturulur?<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>Makine \u00f6\u011frenimi, g\u00fcn\u00fcm\u00fcz teknolojisinin en h\u0131zl\u0131 geli\u015fen ve en d\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fc alanlar\u0131ndan biridir. Verilerden anlaml\u0131 bilgiler \u00e7\u0131kararak gelecekteki olaylar\u0131 tahmin etme veya kararlar alma yetene\u011fi, sa\u011fl\u0131k, finans, pazarlama ve daha bir\u00e7ok sekt\u00f6rde devrim yaratm\u0131\u015ft\u0131r. Bu alan\u0131n temel ta\u015flar\u0131ndan biri de &#8220;s\u0131n\u0131fland\u0131rma&#8221;d\u0131r. S\u0131n\u0131fland\u0131rma, bir veri noktas\u0131n\u0131n \u00f6nceden tan\u0131mlanm\u0131\u015f kategorilerden (s\u0131n\u0131flardan) hangisine ait oldu\u011funu tahmin etme s\u00fcrecidir. \u00d6rne\u011fin, bir e-postan\u0131n spam olup olmad\u0131\u011f\u0131n\u0131, bir m\u00fc\u015fterinin \u00fcr\u00fcn\u00fc sat\u0131n al\u0131p almayaca\u011f\u0131n\u0131 veya bir t\u00fcm\u00f6r\u00fcn iyi huylu mu k\u00f6t\u00fc huylu mu oldu\u011funu belirlemek s\u0131n\u0131fland\u0131rma problemlerine \u00f6rnek te\u015fkil eder.<\/p>\n<p>Python, makine \u00f6\u011frenimi i\u00e7in en pop\u00fcler dillerden biridir ve bu pop\u00fclerli\u011fin \u00f6nemli bir nedeni, zengin k\u00fct\u00fcphane ekosistemidir. Bu k\u00fct\u00fcphaneler aras\u0131nda Scikit-learn (sklearn), basit ve tutarl\u0131 bir API ile \u00e7e\u015fitli makine \u00f6\u011frenimi algoritmalar\u0131n\u0131 sunarak s\u0131n\u0131fland\u0131rma modelleri olu\u015fturmay\u0131 ve de\u011ferlendirmeyi son derece kolayla\u015ft\u0131rmaktad\u0131r. Bu makale, Python ve Scikit-learn kullanarak s\u0131f\u0131rdan bir makine \u00f6\u011frenimi s\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 in\u015fa etme s\u00fcrecini ad\u0131m ad\u0131m a\u00e7\u0131klamay\u0131 hedeflemektedir. Veri haz\u0131rl\u0131\u011f\u0131ndan model se\u00e7imine, e\u011fitimden de\u011ferlendirmeye ve optimizasyona kadar t\u00fcm s\u00fcre\u00e7leri detayl\u0131 bir \u015fekilde inceleyerek, okuyuculara sa\u011flam bir temel sunmay\u0131 ama\u00e7lamaktay\u0131z.<\/p>\n<h3>Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131rmas\u0131na Genel Bak\u0131\u015f<\/h3>\n<h4>S\u0131n\u0131fland\u0131rma Nedir?<\/h4>\n<p>S\u0131n\u0131fland\u0131rma, denetimli \u00f6\u011frenme paradigmalar\u0131ndan biridir. Denetimli \u00f6\u011frenmede, modelin \u00f6\u011frenmesi i\u00e7in hem girdi \u00f6zellikleri (ba\u011f\u0131ms\u0131z de\u011fi\u015fkenler) hem de kar\u015f\u0131l\u0131k gelen \u00e7\u0131kt\u0131 etiketleri (ba\u011f\u0131ml\u0131 de\u011fi\u015fkenler) i\u00e7eren etiketli bir veri k\u00fcmesi kullan\u0131l\u0131r. S\u0131n\u0131fland\u0131rma probleminde, \u00e7\u0131kt\u0131 de\u011fi\u015fkeni kategoriktir; yani s\u0131n\u0131rl\u0131 say\u0131da, ayr\u0131k de\u011fer al\u0131r. \u00d6rne\u011fin, &#8220;evet\/hay\u0131r&#8221;, &#8220;k\u0131rm\u0131z\u0131\/mavi\/ye\u015fil&#8221;, &#8220;kategori A\/kategori B\/kategori C&#8221; gibi. Modelin amac\u0131, yeni, etiketlenmemi\u015f veri noktalar\u0131 verildi\u011finde, bu noktalar\u0131n hangi kategoriye ait oldu\u011funu do\u011fru bir \u015fekilde tahmin etmektir.<\/p>\n<h4>S\u0131n\u0131fland\u0131rma Algoritmalar\u0131<\/h4>\n<p>Makine \u00f6\u011freniminde bir\u00e7ok farkl\u0131 s\u0131n\u0131fland\u0131rma algoritmas\u0131 bulunmaktad\u0131r ve her birinin kendine \u00f6zg\u00fc avantajlar\u0131 ve dezavantajlar\u0131 vard\u0131r. En yayg\u0131n kullan\u0131lanlardan baz\u0131lar\u0131 \u015funlard\u0131r:<br \/>\n*   <strong>Lojistik Regresyon (Logistic Regression):<\/strong> Ad\u0131 regresyon olsa da, ikili s\u0131n\u0131fland\u0131rma problemleri i\u00e7in yayg\u0131n olarak kullan\u0131lan do\u011frusal bir modeldir. Olas\u0131l\u0131klar\u0131 tahmin eder ve bir e\u015fik de\u011feri kullanarak s\u0131n\u0131fland\u0131rma yapar.<br \/>\n*   <strong>Destek Vekt\u00f6r Makineleri (Support Vector Machines &#8211; SVM):<\/strong> Veri noktalar\u0131 aras\u0131nda en geni\u015f marjini sa\u011flayan bir hiperd\u00fczlem bularak s\u0131n\u0131fland\u0131rma yapar. Hem do\u011frusal hem de do\u011frusal olmayan s\u0131n\u0131fland\u0131rma i\u00e7in \u00e7ekirdek (kernel) hileleri ile kullan\u0131labilir.<br \/>\n*   <strong>Karar A\u011fa\u00e7lar\u0131 (Decision Trees):<\/strong> Veri k\u00fcmesini bir dizi kurala g\u00f6re b\u00f6lerek s\u0131n\u0131fland\u0131rma yapar. Yorumlanabilirli\u011fi y\u00fcksek modellerdir.<br \/>\n*   <strong>Rastgele Orman (Random Forest):<\/strong> Birden fazla karar a\u011fac\u0131n\u0131n bir araya gelmesiyle olu\u015fan bir topluluk \u00f6\u011frenme (ensemble learning) algoritmas\u0131d\u0131r. Her bir a\u011fa\u00e7 farkl\u0131 bir veri alt k\u00fcmesi \u00fczerinde e\u011fitilir ve nihai tahmin, a\u011fa\u00e7lar\u0131n \u00e7o\u011funluk oyu ile belirlenir. Bu, a\u015f\u0131r\u0131 uyumu azalt\u0131r ve daha sa\u011flam sonu\u00e7lar verir.<br \/>\n*   <strong>K-En Yak\u0131n Kom\u015fu (K-Nearest Neighbors &#8211; KNN):<\/strong> Bir veri noktas\u0131n\u0131, e\u011fitim veri k\u00fcmesindeki kendisine en yak\u0131n K adet noktan\u0131n \u00e7o\u011funluk s\u0131n\u0131f\u0131na g\u00f6re s\u0131n\u0131fland\u0131r\u0131r. Ezberci bir algoritmad\u0131r ve hesaplama yo\u011funlu\u011fu y\u00fcksek olabilir.<br \/>\n*   <strong>Geni\u015fletme (Gradient Boosting) Algoritmalar\u0131 (\u00f6rn. XGBoost, LightGBM, CatBoost):<\/strong> Zay\u0131f \u00f6\u011frenicileri (genellikle karar a\u011fa\u00e7lar\u0131) bir araya getirerek g\u00fc\u00e7l\u00fc bir model olu\u015fturan topluluk \u00f6\u011frenme y\u00f6ntemleridir. Genellikle y\u00fcksek performans g\u00f6sterirler.<\/p>\n<h4>Denetimli \u00d6\u011frenme ve Etiketli Veri<\/h4>\n<p>S\u0131n\u0131fland\u0131rma, denetimli \u00f6\u011frenmenin bir alt k\u00fcmesidir. Bu, modelin &#8220;g\u00f6zetim alt\u0131nda&#8221; \u00f6\u011frendi\u011fi anlam\u0131na gelir. G\u00f6zetim, her bir girdi \u00f6rne\u011fi i\u00e7in do\u011fru \u00e7\u0131kt\u0131n\u0131n (etiketin) mevcut oldu\u011fu etiketli veri k\u00fcmeleri arac\u0131l\u0131\u011f\u0131yla sa\u011flan\u0131r. Model, bu etiketli verileri kullanarak girdi \u00f6zellikleri ile \u00e7\u0131kt\u0131 etiketleri aras\u0131ndaki ili\u015fkiyi \u00f6\u011frenir. E\u011fitim s\u0131ras\u0131nda model, tahminlerini ger\u00e7ek etiketlerle kar\u015f\u0131la\u015ft\u0131r\u0131r ve hatalar\u0131n\u0131 minimize etmek i\u00e7in a\u011f\u0131rl\u0131klar\u0131n\u0131 ve yanl\u0131l\u0131klar\u0131n\u0131 (bias) ayarlar. Etiketli veri olmaks\u0131z\u0131n s\u0131n\u0131fland\u0131rma yapmak m\u00fcmk\u00fcn de\u011fildir; bu nedenle, kaliteli ve yeterli miktarda etiketli veri, ba\u015far\u0131l\u0131 bir s\u0131n\u0131fland\u0131rma modelinin temelini olu\u015fturur.<\/p>\n<h3>Scikit-learn&#8217;e Giri\u015f<\/h3>\n<h4>Scikit-learn Neden Tercih Edilmeli?<\/h4>\n<p>Scikit-learn, Python i\u00e7in a\u00e7\u0131k kaynakl\u0131, ticari olarak kullan\u0131labilen BSD lisansl\u0131 bir makine \u00f6\u011frenimi k\u00fct\u00fcphanesidir. Makine \u00f6\u011frenimi uzmanlar\u0131 ve veri bilimcileri aras\u0131nda bu kadar pop\u00fcler olmas\u0131n\u0131n bir\u00e7ok nedeni vard\u0131r:<br \/>\n*   <strong>Kapsaml\u0131 Algoritma Koleksiyonu:<\/strong> S\u0131n\u0131fland\u0131rma, regresyon, k\u00fcmeleme, boyut indirgeme, model se\u00e7imi ve \u00f6n i\u015fleme gibi bir\u00e7ok makine \u00f6\u011frenimi g\u00f6revini kapsayan geni\u015f bir algoritma yelpazesine sahiptir.<br \/>\n*   <strong>Tutarl\u0131 API:<\/strong> T\u00fcm algoritmalar benzer bir API (Application Programming Interface) yap\u0131s\u0131n\u0131 takip eder. Bu, bir algoritmadan di\u011ferine ge\u00e7i\u015fi kolayla\u015ft\u0131r\u0131r ve \u00f6\u011frenme e\u011frisini d\u00fc\u015f\u00fcr\u00fcr. Temel olarak, t\u00fcm modellerin <code>fit()<\/code> ve <code>predict()<\/code> metodlar\u0131 bulunur.<br \/>\n*   <strong>Kullan\u0131m Kolayl\u0131\u011f\u0131:<\/strong> \u0130yi belgelenmi\u015f, anla\u015f\u0131l\u0131r ve kullan\u0131m\u0131 kolayd\u0131r. Yeni ba\u015flayanlar i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<br \/>\n*   <strong>Performans:<\/strong> \u00c7o\u011fu algoritma, C veya Cython&#8217;da optimize edilmi\u015f \u00e7ekirdek kodlar\u0131 kullan\u0131r, bu da iyi performans sa\u011flar.<br \/>\n*   <strong>Entegrasyon:<\/strong> NumPy, SciPy ve Matplotlib gibi di\u011fer pop\u00fcler Python k\u00fct\u00fcphaneleriyle sorunsuz bir \u015fekilde entegre olur.<\/p>\n<h4>Kurulum<\/h4>\n<p>Scikit-learn&#8217;i kurmak olduk\u00e7a basittir. Python&#8217;un y\u00fckl\u00fc oldu\u011fu bir ortamda, genellikle <code>pip<\/code> veya <code>conda<\/code> paket y\u00f6neticileri kullan\u0131larak yap\u0131labilir:<br \/>\n*   <strong>Pip ile kurulum:<\/strong> <code>pip install scikit-learn<\/code><br \/>\n*   <strong>Conda ile kurulum (Anaconda veya Miniconda kullan\u0131yorsan\u0131z):<\/strong> <code>conda install scikit-learn<\/code><br \/>\nKurulumdan sonra, k\u00fct\u00fcphaneyi Python kodunuzda <code>import sklearn<\/code> \u015feklinde \u00e7a\u011f\u0131rarak kullanmaya ba\u015flayabilirsiniz.<\/p>\n<h4>Temel Yap\u0131 Ta\u015flar\u0131: Estimators ve Transformers<\/h4>\n<p>Scikit-learn&#8217;in tutarl\u0131 API&#8217;sinin arkas\u0131nda iki ana kavram yatar:<br \/>\n*   <strong>Estimators (Tahminciler):<\/strong> Bir modelin veya algoritman\u0131n kendisidir. <code>fit(X, y)<\/code> metodu ile e\u011fitim verileri \u00fczerinde \u00f6\u011frenir ve <code>predict(X)<\/code> metodu ile yeni veriler \u00fczerinde tahminler yapar. S\u0131n\u0131fland\u0131r\u0131c\u0131lar (\u00f6rne\u011fin <code>LogisticRegression<\/code>, <code>RandomForestClassifier<\/code>) ve regres\u00f6rler (\u00f6rne\u011fin <code>LinearRegression<\/code>, <code>SVR<\/code>) birer tahmincidir.<br \/>\n*   <strong>Transformers (D\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fcler):<\/strong> Veri \u00f6n i\u015fleme ve \u00f6zellik m\u00fchendisli\u011fi i\u00e7in kullan\u0131l\u0131rlar. <code>fit(X, y)<\/code> metodu ile veriler \u00fczerinde \u00f6\u011frenirler (\u00f6rne\u011fin, bir \u00f6l\u00e7ekleyicinin ortalamay\u0131 ve standart sapmay\u0131 \u00f6\u011frenmesi) ve <code>transform(X)<\/code> metodu ile verileri d\u00f6n\u00fc\u015ft\u00fcr\u00fcrler. <code>fit_transform(X, y)<\/code> metodu ise hem \u00f6\u011frenme hem de d\u00f6n\u00fc\u015ft\u00fcrme i\u015flemini tek ad\u0131mda yapar. \u00d6rne\u011fin, <code>StandardScaler<\/code>, <code>MinMaxScaler<\/code>, <code>OneHotEncoder<\/code> birer d\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fcd\u00fcr.<\/p>\n<p>Bu iki yap\u0131 ta\u015f\u0131, Scikit-learn&#8217;de makine \u00f6\u011frenimi i\u015f ak\u0131\u015flar\u0131n\u0131 tasarlarken b\u00fcy\u00fck esneklik ve mod\u00fclerlik sa\u011flar.<\/p>\n<h3>Uygulamal\u0131 \u00d6rnek: Bir S\u0131n\u0131fland\u0131r\u0131c\u0131 Olu\u015fturma Ad\u0131mlar\u0131<\/h3>\n<p>\u015eimdi, Python ve Scikit-learn kullanarak bir s\u0131n\u0131fland\u0131rma modeli olu\u015fturman\u0131n pratik ad\u0131mlar\u0131n\u0131 detayl\u0131 bir \u015fekilde inceleyelim. Bu \u00f6rnekte, pop\u00fcler &#8220;Iris&#8221; \u00e7i\u00e7ek veri k\u00fcmesini kullanaca\u011f\u0131z. Bu veri k\u00fcmesi, \u00fc\u00e7 farkl\u0131 Iris \u00e7i\u00e7e\u011fi t\u00fcr\u00fcn\u00fc (setosa, versicolor, virginica) d\u00f6rt \u00f6zellik (\u00e7anak yapra\u011f\u0131 uzunlu\u011fu, \u00e7anak yapra\u011f\u0131 geni\u015fli\u011fi, ta\u00e7 yapra\u011f\u0131 uzunlu\u011fu, ta\u00e7 yapra\u011f\u0131 geni\u015fli\u011fi) \u00fczerinden s\u0131n\u0131fland\u0131rmay\u0131 ama\u00e7lar.<\/p>\n<h4>Ad\u0131m 1: Veri K\u00fcmesi Se\u00e7imi ve Haz\u0131rl\u0131\u011f\u0131<\/h4>\n<p>Bir makine \u00f6\u011frenimi projesinin ilk ve belki de en kritik ad\u0131m\u0131, uygun bir veri k\u00fcmesi se\u00e7mek ve onu modele haz\u0131r hale getirmektir.<\/p>\n<h5>Veri K\u00fcmesi Se\u00e7imi<\/h5>\n<p>Iris veri k\u00fcmesi, Scikit-learn&#8217;de yerle\u015fik olarak bulunur ve s\u0131n\u0131fland\u0131rma problemlerini \u00f6\u011frenmek i\u00e7in m\u00fckemmel bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Basit, temiz ve iyi anla\u015f\u0131lm\u0131\u015f bir veri k\u00fcmesidir.<\/p>\n<h5>Veri Y\u00fckleme<\/h5>\n<p>Veri k\u00fcmesini Scikit-learn&#8217;den do\u011frudan y\u00fckleyebiliriz. Genellikle veri analizleri i\u00e7in Pandas k\u00fct\u00fcphanesi de kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-python\">import pandas as pd\nfrom sklearn.datasets import load_iris\n\n<h2>Iris veri k\u00fcmesini y\u00fckle<\/h2>\niris = load_iris()\nX = iris.data  # \u00d6zellikler\ny = iris.target # Hedef de\u011fi\u015fken (s\u0131n\u0131flar)\n\n<h2>\u00d6zellik isimleri ve hedef s\u0131n\u0131f isimleri<\/h2>\nfeature_names = iris.feature_names\ntarget_names = iris.target_names\n\n<h2>Veriyi bir DataFrame'e d\u00f6n\u00fc\u015ft\u00fcrerek daha kolay inceleyebiliriz<\/h2>\ndf = pd.DataFrame(X, columns=feature_names)\ndf['target'] = y\ndf['target_name'] = df['target'].apply(lambda x: target_names[x])<\/code><\/pre>\n<p>Bu kod par\u00e7ac\u0131\u011f\u0131, Iris veri k\u00fcmesini y\u00fckler ve \u00f6zellikler (<code>X<\/code>) ile hedef de\u011fi\u015fkeni (<code>y<\/code>) ay\u0131r\u0131r. Ard\u0131ndan, veriyi bir Pandas DataFrame&#8217;ine d\u00f6n\u00fc\u015ft\u00fcrerek daha kolay incelenmesini sa\u011flar.<\/p>\n<h5>Veriyi Anlama ve Ke\u015ffetme (EDA &#8211; Exploratory Data Analysis)<\/h5>\n<p>Veri k\u00fcmesini y\u00fckledikten sonra, yap\u0131s\u0131n\u0131, istatistiksel \u00f6zetlerini ve da\u011f\u0131l\u0131mlar\u0131n\u0131 anlamak \u00e7ok \u00f6nemlidir.<br \/>\n*   <code>df.head()<\/code>: Veri k\u00fcmesinin ilk birka\u00e7 sat\u0131r\u0131n\u0131 g\u00f6sterir.<br \/>\n*   <code>df.info()<\/code>: S\u00fctun tipleri, eksik de\u011ferler ve bellek kullan\u0131m\u0131 hakk\u0131nda bilgi verir.<br \/>\n*   <code>df.describe()<\/code>: Say\u0131sal s\u00fctunlar\u0131n istatistiksel \u00f6zetini (ortalama, standart sapma, min, max vb.) sunar.<br \/>\n*   <code>df['target_name'].value_counts()<\/code>: Her bir s\u0131n\u0131f\u0131n ka\u00e7ar adet \u00f6rne\u011fi oldu\u011funu g\u00f6sterir (s\u0131n\u0131f dengesizli\u011fini kontrol etmek i\u00e7in \u00f6nemlidir).<br \/>\n*   G\u00f6rselle\u015ftirmeler (Matplotlib, Seaborn ile): \u00d6zellik da\u011f\u0131l\u0131mlar\u0131n\u0131, \u00f6zellikler aras\u0131 ili\u015fkileri ve \u00f6zelliklerin hedef s\u0131n\u0131fla ili\u015fkisini anlamak i\u00e7in histogramlar, sa\u00e7\u0131l\u0131m grafikleri ve kutu grafikleri \u00e7izilebilir. \u00d6rne\u011fin, <code>sns.pairplot(df, hue='target_name')<\/code> t\u00fcm \u00f6zellikler aras\u0131 ili\u015fkileri ve s\u0131n\u0131f ayr\u0131m\u0131n\u0131 g\u00f6rselle\u015ftirmek i\u00e7in g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r.<\/p>\n<h5>Eksik Veri \u0130\u015fleme<\/h5>\n<p>Ger\u00e7ek d\u00fcnya veri k\u00fcmelerinde s\u0131kl\u0131kla eksik de\u011ferler bulunur. Iris veri k\u00fcmesi temiz oldu\u011fu i\u00e7in eksik de\u011feri yoktur, ancak genel olarak:<br \/>\n*   Eksik de\u011ferleri i\u00e7eren sat\u0131rlar\u0131 veya s\u00fctunlar\u0131 silmek (<code>df.dropna()<\/code>).<br \/>\n*   Eksik de\u011ferleri ortalama, medyan veya mod gibi istatistiksel de\u011ferlerle doldurmak (<code>df.fillna()<\/code>).<br \/>\n*   Makine \u00f6\u011frenimi algoritmalar\u0131 (\u00f6rn. <code>SimpleImputer<\/code>) kullanarak eksik de\u011ferleri tahmin etmek.<\/p>\n<h5>Kategorik Veri \u0130\u015fleme<\/h5>\n<p>E\u011fer veri k\u00fcmenizde say\u0131sal olmayan kategorik \u00f6zellikler olsayd\u0131 (\u00f6rne\u011fin, &#8220;renk&#8221;: &#8220;k\u0131rm\u0131z\u0131&#8221;, &#8220;mavi&#8221;, &#8220;ye\u015fil&#8221;), bunlar\u0131 say\u0131sal formatlara d\u00f6n\u00fc\u015ft\u00fcrmeniz gerekirdi.<br \/>\n*   <strong>Label Encoding:<\/strong> Kategorik de\u011ferleri ard\u0131\u015f\u0131k say\u0131larla kodlar (\u00f6rn. k\u0131rm\u0131z\u0131=0, mavi=1, ye\u015fil=2). S\u0131ral\u0131 kategoriler i\u00e7in uygun olabilir, ancak s\u0131ralama olmayan kategorilerde modelin yanl\u0131\u015f bir s\u0131ra alg\u0131lamas\u0131na neden olabilir.<br \/>\n*   <strong>One-Hot Encoding:<\/strong> Her kategorik de\u011fer i\u00e7in yeni bir ikili (0 veya 1) s\u00fctun olu\u015fturur. Bu, s\u0131ralama ili\u015fkisi olmayan kategorik veriler i\u00e7in daha g\u00fcvenlidir. Scikit-learn&#8217;deki <code>OneHotEncoder<\/code> veya Pandas&#8217;taki <code>pd.get_dummies()<\/code> kullan\u0131labilir. Iris veri k\u00fcmesinde t\u00fcm \u00f6zellikler say\u0131sal oldu\u011fundan bu ad\u0131ma gerek yoktur.<\/p>\n<h5>\u00d6zellik \u00d6l\u00e7eklendirme<\/h5>\n<p>Bir\u00e7ok makine \u00f6\u011frenimi algoritmas\u0131 (\u00f6zellikle mesafe tabanl\u0131 algoritmalar gibi KNN, SVM veya gradyan ini\u015f kullananlar gibi Lojistik Regresyon), farkl\u0131 \u00f6l\u00e7eklerdeki \u00f6zelliklerden olumsuz etkilenebilir. \u00d6zellik \u00f6l\u00e7eklendirme, t\u00fcm \u00f6zelliklerin benzer bir aral\u0131\u011fa getirilmesini sa\u011flar.<br \/>\n*   <strong>StandardScaler:<\/strong> \u00d6zellikleri ortalama 0 ve standart sapma 1 olacak \u015fekilde \u00f6l\u00e7eklendirir (standart normal da\u011f\u0131l\u0131m).<br \/>\n*   <strong>MinMaxScaler:<\/strong> \u00d6zellikleri belirli bir aral\u0131\u011fa (genellikle 0 ile 1 aras\u0131na) \u00f6l\u00e7eklendirir.<\/p>\n<pre><code class=\"language-python\">from sklearn.preprocessing import StandardScaler\n\nscaler = StandardScaler()\nX_scaled = scaler.fit_transform(X) # X'i \u00f6l\u00e7eklendir<\/code><\/pre>\n<p>Bu ad\u0131m, modelin daha h\u0131zl\u0131 ve daha kararl\u0131 bir \u015fekilde yak\u0131nsamas\u0131n\u0131 sa\u011flayabilir.<\/p>\n<h4>Ad\u0131m 2: Veriyi E\u011fitim ve Test K\u00fcmelerine Ay\u0131rma<\/h4>\n<p>Modelin genelleme yetene\u011fini de\u011ferlendirmek i\u00e7in veri k\u00fcmesini e\u011fitim (training) ve test (testing) k\u00fcmelerine ay\u0131rmak zorunludur. Model e\u011fitim k\u00fcmesi \u00fczerinde \u00f6\u011frenir ve test k\u00fcmesi \u00fczerinde de\u011ferlendirilir. Test k\u00fcmesi, modelin daha \u00f6nce g\u00f6rmedi\u011fi veriler \u00fczerindeki performans\u0131n\u0131 \u00f6l\u00e7mek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-python\">from sklearn.model_selection import train_test_split\n\nX_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42, stratify=y)<\/code><\/pre>\n<p>*   <code>test_size=0.3<\/code>: Verinin %30&#8217;unun test k\u00fcmesi i\u00e7in ayr\u0131ld\u0131\u011f\u0131n\u0131 belirtir.<br \/>\n*   <code>random_state=42<\/code>: Rastgele b\u00f6lme i\u015fleminin her seferinde ayn\u0131 sonu\u00e7lar\u0131 vermesini sa\u011flar, bu da tekrarlanabilirli\u011fi art\u0131r\u0131r.<br \/>\n*   <code>stratify=y<\/code>: \u00d6zellikle dengesiz s\u0131n\u0131f da\u011f\u0131l\u0131m\u0131na sahip veri k\u00fcmelerinde \u00f6nemlidir. E\u011fitim ve test k\u00fcmelerinde hedef s\u0131n\u0131flar\u0131n oran\u0131n\u0131n orijinal veri k\u00fcmesindeki oranla ayn\u0131 kalmas\u0131n\u0131 sa\u011flar. Iris veri k\u00fcmesinde s\u0131n\u0131flar dengeli olsa da, iyi bir pratik olarak kullan\u0131lmas\u0131 \u00f6nerilir.<\/p>\n<h4>Ad\u0131m 3: Model Se\u00e7imi<\/h4>\n<p>Hangi s\u0131n\u0131fland\u0131rma algoritmas\u0131n\u0131n kullan\u0131laca\u011f\u0131, veri k\u00fcmesinin \u00f6zelliklerine, problem t\u00fcr\u00fcne ve performans gereksinimlerine ba\u011fl\u0131d\u0131r. Ba\u015flang\u0131\u00e7ta, farkl\u0131 algoritmalar\u0131 denemek iyi bir yakla\u015f\u0131md\u0131r. Bu \u00f6rnekte, pop\u00fcler ve g\u00fc\u00e7l\u00fc bir algoritma olan Rastgele Orman S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131n\u0131 (<code>RandomForestClassifier<\/code>) kullanaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-python\">from sklearn.ensemble import RandomForestClassifier\n\n<h2>Bir Rastgele Orman S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 modeli olu\u015ftur<\/h2>\nmodel = RandomForestClassifier(random_state=42)<\/code><\/pre>\n<p><code>random_state<\/code> parametresi, modelin i\u00e7indeki rastgelelik unsurlar\u0131n\u0131n tekrarlanabilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Ad\u0131m 4: Modeli E\u011fitme<\/h4>\n<p>Modeli e\u011fitmek, se\u00e7ilen algoritman\u0131n e\u011fitim veri k\u00fcmesindeki \u00f6r\u00fcnt\u00fcleri \u00f6\u011frenmesini sa\u011flamakt\u0131r. Scikit-learn&#8217;de bu, <code>fit()<\/code> metodu ile yap\u0131l\u0131r.<\/p>\n<pre><code class=\"language-python\"># Modeli e\u011fitim verileri \u00fczerinde e\u011fit\nmodel.fit(X_train, y_train)<\/code><\/pre>\n<p>Bu ad\u0131mda, <code>RandomForestClassifier<\/code> algoritmas\u0131, <code>X_train<\/code> \u00f6zelliklerini kullanarak <code>y_train<\/code> etiketlerini tahmin etmeyi \u00f6\u011frenir.<\/p>\n<h4>Ad\u0131m 5: Tahmin Yapma<\/h4>\n<p>Model e\u011fitildikten sonra, test k\u00fcmesindeki veya yeni, daha \u00f6nce g\u00f6r\u00fclmemi\u015f verilerdeki etiketleri tahmin etmek i\u00e7in kullan\u0131labilir. Bu, <code>predict()<\/code> metodu ile ger\u00e7ekle\u015ftirilir.<\/p>\n<pre><code class=\"language-python\"># E\u011fitilmi\u015f model ile test verileri \u00fczerinde tahmin yap\ny_pred = model.predict(X_test)<\/code><\/pre>\n<p><code>y_pred<\/code> de\u011fi\u015fkeni, modelin <code>X_test<\/code> \u00fczerindeki tahminlerini i\u00e7eren bir dizidir.<\/p>\n<h4>Ad\u0131m 6: Model De\u011ferlendirme<\/h4>\n<p>Modelin ne kadar iyi performans g\u00f6sterdi\u011fini anlamak i\u00e7in tahminlerin ger\u00e7ek etiketlerle kar\u015f\u0131la\u015ft\u0131r\u0131lmas\u0131 gerekir. S\u0131n\u0131fland\u0131rma modellerini de\u011ferlendirmek i\u00e7in \u00e7e\u015fitli metrikler kullan\u0131l\u0131r.<\/p>\n<h5>Do\u011fruluk (Accuracy)<\/h5>\n<p>En basit ve yayg\u0131n metriklerden biridir. Do\u011fru tahmin edilen \u00f6rneklerin toplam \u00f6rnek say\u0131s\u0131na oran\u0131d\u0131r.<\/p>\n<pre><code class=\"language-python\">from sklearn.metrics import accuracy_score\n\naccuracy = accuracy_score(y_test, y_pred)\nprint(f\"Model Do\u011frulu\u011fu: {accuracy:.2f}\")<\/code><\/pre>\n<p>Do\u011fruluk, dengeli veri k\u00fcmeleri i\u00e7in iyi bir g\u00f6sterge olabilir, ancak dengesiz veri k\u00fcmelerinde yan\u0131lt\u0131c\u0131 olabilir.<\/p>\n<h5>Karma\u015f\u0131kl\u0131k Matrisi (Confusion Matrix)<\/h5>\n<p>Modelin hangi s\u0131n\u0131flar\u0131 do\u011fru, hangi s\u0131n\u0131flar\u0131 yanl\u0131\u015f tahmin etti\u011fini g\u00f6steren bir tablodur. \u0130kili s\u0131n\u0131fland\u0131rma i\u00e7in:<br \/>\n*   <strong>True Positive (TP):<\/strong> Ger\u00e7ek pozitif, tahmin pozitif.<br \/>\n*   <strong>True Negative (TN):<\/strong> Ger\u00e7ek negatif, tahmin negatif.<br \/>\n*   <strong>False Positive (FP):<\/strong> Ger\u00e7ek negatif, tahmin pozitif (Tip I hata).<br \/>\n*   <strong>False Negative (FN):<\/strong> Ger\u00e7ek pozitif, tahmin negatif (Tip II hata).<br \/>\n\u00c7ok s\u0131n\u0131fl\u0131 s\u0131n\u0131fland\u0131rmada, matrisin her bir sat\u0131r\u0131 ger\u00e7ek s\u0131n\u0131f\u0131, her bir s\u00fctunu ise tahmin edilen s\u0131n\u0131f\u0131 temsil eder.<\/p>\n<pre><code class=\"language-python\">from sklearn.metrics import confusion_matrix\nimport seaborn as sns\nimport matplotlib.pyplot as plt\n\ncm = confusion_matrix(y_test, y_pred)\nprint(\"Karma\u015f\u0131kl\u0131k Matrisi:\\n\", cm)\n\n<h2>G\u00f6rselle\u015ftirme<\/h2>\nplt.figure(figsize=(8, 6))\nsns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=target_names, yticklabels=target_names)\nplt.xlabel('Tahmin Edilen S\u0131n\u0131f')\nplt.ylabel('Ger\u00e7ek S\u0131n\u0131f')\nplt.title('Karma\u015f\u0131kl\u0131k Matrisi')\nplt.show()<\/code><\/pre>\n<h5>Hassasiyet (Precision), Duyarl\u0131l\u0131k (Recall) ve F1-Skor (F1-Score)<\/h5>\n<p>Bu metrikler, \u00f6zellikle dengesiz veri k\u00fcmeleri veya belirli hata t\u00fcrlerinin (FP veya FN) daha maliyetli oldu\u011fu durumlarda daha bilgilendirici olabilir.<br \/>\n*   <strong>Hassasiyet (Precision):<\/strong> Pozitif olarak tahmin edilen \u00f6rnekler aras\u0131nda ger\u00e7ekten pozitif olanlar\u0131n oran\u0131d\u0131r (TP \/ (TP + FP)). Yanl\u0131\u015f pozitiflerin maliyetli oldu\u011fu durumlarda \u00f6nemlidir (\u00f6rn. spam alg\u0131lama).<br \/>\n*   <strong>Duyarl\u0131l\u0131k (Recall \/ Sensitivity):<\/strong> Ger\u00e7ekten pozitif olan t\u00fcm \u00f6rnekler aras\u0131nda do\u011fru tahmin edilen pozitiflerin oran\u0131d\u0131r (TP \/ (TP + FN)). Yanl\u0131\u015f negatiflerin maliyetli oldu\u011fu durumlarda \u00f6nemlidir (\u00f6rn. hastal\u0131k te\u015fhisi).<br \/>\n<em>   <strong>F1-Skor:<\/strong> Hassasiyet ve duyarl\u0131l\u0131\u011f\u0131n harmonik ortalamas\u0131d\u0131r (2 <\/em> (Precision * Recall) \/ (Precision + Recall)). Her iki metri\u011fin de \u00f6nemli oldu\u011fu durumlarda iyi bir dengeleyici metrik sunar.<\/p>\n<p>Scikit-learn, bu metrikleri ve daha fazlas\u0131n\u0131 i\u00e7eren kapsaml\u0131 bir s\u0131n\u0131fland\u0131rma raporu sunar:<\/p>\n<pre><code class=\"language-python\">from sklearn.metrics import classification_report\n\nreport = classification_report(y_test, y_pred, target_names=target_names)\nprint(\"S\u0131n\u0131fland\u0131rma Raporu:\\n\", report)<\/code><\/pre>\n<h5>ROC E\u011frisi ve AUC (Area Under the Curve)<\/h5>\n<p>ROC (Receiver Operating Characteristic) e\u011frisi ve AUC, ikili s\u0131n\u0131fland\u0131rma modellerinin performans\u0131n\u0131 farkl\u0131 s\u0131n\u0131fland\u0131rma e\u015fiklerinde de\u011ferlendirmek i\u00e7in kullan\u0131l\u0131r. ROC e\u011frisi, True Positive Rate (Duyarl\u0131l\u0131k) ile False Positive Rate (1 &#8211; \u00d6zg\u00fcll\u00fck) aras\u0131ndaki ili\u015fkiyi g\u00f6sterir. AUC de\u011feri, e\u011frinin alt\u0131nda kalan alan\u0131 temsil eder; 1&#8217;e yak\u0131n bir AUC, modelin s\u0131n\u0131flar\u0131 \u00e7ok iyi ay\u0131rd\u0131\u011f\u0131n\u0131 g\u00f6sterir. \u00c7ok s\u0131n\u0131fl\u0131 s\u0131n\u0131fland\u0131rma i\u00e7in genellikle her s\u0131n\u0131f i\u00e7in ayr\u0131 ayr\u0131 ROC\/AUC hesaplan\u0131r (one-vs-rest yakla\u015f\u0131m\u0131yla).<\/p>\n<h4>Ad\u0131m 7: Hiperparametre Ayarlama ve Model Optimizasyonu<\/h4>\n<p>Makine \u00f6\u011frenimi modellerinin performans\u0131, modelin mimarisini ve \u00f6\u011frenme s\u00fcrecini kontrol eden &#8220;hiperparametreler&#8221; taraf\u0131ndan b\u00fcy\u00fck \u00f6l\u00e7\u00fcde etkilenebilir. \u00d6rne\u011fin, <code>RandomForestClassifier<\/code> i\u00e7in <code>n_estimators<\/code> (a\u011fa\u00e7 say\u0131s\u0131) veya <code>max_depth<\/code> (her a\u011fac\u0131n maksimum derinli\u011fi) gibi hiperparametreler vard\u0131r. En iyi hiperparametre kombinasyonunu bulmak i\u00e7in &#8220;hiperparametre ayarlama&#8221; (hyperparameter tuning) teknikleri kullan\u0131l\u0131r.<\/p>\n<h5>Grid Search (Izgara Aramas\u0131)<\/h5>\n<p><code>GridSearchCV<\/code>, belirtilen hiperparametre de\u011ferlerinin t\u00fcm olas\u0131 kombinasyonlar\u0131n\u0131 sistematik olarak dener ve \u00e7apraz do\u011frulama (cross-validation) kullanarak en iyi performans\u0131 veren kombinasyonu bulur.<\/p>\n<pre><code class=\"language-python\">from sklearn.model_selection import GridSearchCV\n\n<h2>Ayarlanacak hiperparametreler ve de\u011fer aral\u0131klar\u0131<\/h2>\nparam_grid = {\n    'n_estimators': [50, 100, 200],\n    'max_depth': [None, 10, 20, 30],\n    'min_samples_split': [2, 5, 10]\n}\n\n<h2>GridSearchCV nesnesini olu\u015ftur<\/h2>\ngrid_search = GridSearchCV(estimator=RandomForestClassifier(random_state=42),\n                           param_grid=param_grid,\n                           cv=5, # 5 katl\u0131 \u00e7apraz do\u011frulama\n                           scoring='accuracy', # De\u011ferlendirme metri\u011fi\n                           n_jobs=-1) # T\u00fcm \u00e7ekirdekleri kullan\n\n<h2>Grid Search'\u00fc e\u011fitim verileri \u00fczerinde \u00e7al\u0131\u015ft\u0131r<\/h2>\ngrid_search.fit(X_train, y_train)\n\n<h2>En iyi parametreleri ve skoru yazd\u0131r<\/h2>\nprint(f\"En iyi parametreler: {grid_search.best_params_}\")\nprint(f\"En iyi \u00e7apraz do\u011frulama skoru: {grid_search.best_score_:.2f}\")\n\n<h2>En iyi modeli al<\/h2>\nbest_model = grid_search.best_estimator_\n\n<h2>Test k\u00fcmesi \u00fczerinde en iyi modelin performans\u0131n\u0131 de\u011ferlendir<\/h2>\ny_pred_best = best_model.predict(X_test)\naccuracy_best = accuracy_score(y_test, y_pred_best)\nprint(f\"Ayarlanm\u0131\u015f Model Do\u011frulu\u011fu (Test K\u00fcmesi): {accuracy_best:.2f}\")<\/code><\/pre>\n<h5>Random Search (Rastgele Arama)<\/h5>\n<p><code>RandomizedSearchCV<\/code>, <code>GridSearchCV<\/code>&#8216;ye benzer, ancak t\u00fcm kombinasyonlar\u0131 denemek yerine, belirtilen da\u011f\u0131l\u0131mlardan rastgele \u00f6rneklenen belirli say\u0131da kombinasyonu dener. Geni\u015f hiperparametre uzaylar\u0131nda daha verimli olabilir.<\/p>\n<h5>\u00c7apraz Do\u011frulama (Cross-validation)<\/h5>\n<p>\u00c7apraz do\u011frulama, modelin genelleme yetene\u011fini daha sa\u011flam bir \u015fekilde tahmin etmek i\u00e7in kullan\u0131l\u0131r. Veri k\u00fcmesini birden fazla e\u011fitim\/do\u011frulama kat\u0131na b\u00f6ler ve her katta modeli farkl\u0131 bir alt k\u00fcme \u00fczerinde e\u011fitip kalan \u00fczerinde de\u011ferlendirir. <code>GridSearchCV<\/code> ve <code>RandomizedSearchCV<\/code> dahili olarak \u00e7apraz do\u011frulama kullan\u0131r.<\/p>\n<h5>Pipeline Kullan\u0131m\u0131<\/h5>\n<p>Scikit-learn <code>Pipeline<\/code>&#8216;lar\u0131, veri \u00f6n i\u015fleme ad\u0131mlar\u0131n\u0131 (\u00f6l\u00e7eklendirme, kategorik kodlama vb.) ve model e\u011fitimini tek bir ak\u0131\u015fta birle\u015ftirmek i\u00e7in g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Bu, kodun daha d\u00fczenli olmas\u0131n\u0131, hatalar\u0131n azalmas\u0131n\u0131 ve \u00f6zellikle \u00e7apraz do\u011frulama ve hiperparametre ayarlama s\u0131ras\u0131nda veri s\u0131z\u0131nt\u0131s\u0131n\u0131 (data leakage) \u00f6nlemesini sa\u011flar.<\/p>\n<pre><code class=\"language-python\">from sklearn.pipeline import Pipeline\n\n<h2>Pipeline olu\u015ftur<\/h2>\npipeline = Pipeline([\n    ('scaler', StandardScaler()), # \u0130lk ad\u0131m: \u00f6l\u00e7eklendirme\n    ('classifier', RandomForestClassifier(random_state=42)) # \u0130kinci ad\u0131m: s\u0131n\u0131fland\u0131r\u0131c\u0131\n])\n\n<h2>Pipeline'\u0131 e\u011fit<\/h2>\npipeline.fit(X_train, y_train)\n\n<h2>Tahmin yap<\/h2>\ny_pred_pipeline = pipeline.predict(X_test)\n\n<h2>De\u011ferlendir<\/h2>\naccuracy_pipeline = accuracy_score(y_test, y_pred_pipeline)\nprint(f\"Pipeline ile Model Do\u011frulu\u011fu: {accuracy_pipeline:.2f}\")\n\n<h2>Pipeline ile hiperparametre ayarlama da yap\u0131labilir<\/h2>\nparam_grid_pipeline = {\n    'classifier__n_estimators': [50, 100],\n    'classifier__max_depth': [None, 10]\n}\ngrid_search_pipeline = GridSearchCV(pipeline, param_grid_pipeline, cv=5)\ngrid_search_pipeline.fit(X_train, y_train)\nprint(f\"Pipeline ile en iyi parametreler: {grid_search_pipeline.best_params_}\")<\/code><\/pre>\n<p>Pipeline kullan\u0131m\u0131, \u00f6zellikle karma\u015f\u0131k \u00f6n i\u015fleme ad\u0131mlar\u0131 olan projelerde i\u015f ak\u0131\u015f\u0131n\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde basitle\u015ftirir.<\/p>\n<h3>Geli\u015fmi\u015f Konular ve En \u0130yi Uygulamalar<\/h3>\n<h4>Dengesiz Veri K\u00fcmeleriyle Ba\u015fa \u00c7\u0131kma<\/h4>\n<p>Bir s\u0131n\u0131f\u0131n di\u011ferlerine g\u00f6re \u00e7ok daha az \u00f6rne\u011fe sahip oldu\u011fu veri k\u00fcmeleri &#8220;dengesiz&#8221; olarak adland\u0131r\u0131l\u0131r. Bu durumda, model az\u0131nl\u0131k s\u0131n\u0131f\u0131n\u0131 g\u00f6z ard\u0131 etme e\u011filiminde olabilir. \u00c7\u00f6z\u00fcmler:<br \/>\n*   <strong>A\u015f\u0131r\u0131 \u00d6rnekleme (Oversampling):<\/strong> Az\u0131nl\u0131k s\u0131n\u0131f\u0131ndan daha fazla \u00f6rnek olu\u015fturma (\u00f6rn. SMOTE &#8211; Synthetic Minority Over-sampling Technique).<br \/>\n*   <strong>Az \u00d6rnekleme (Undersampling):<\/strong> \u00c7o\u011funluk s\u0131n\u0131f\u0131ndan \u00f6rnekleri azaltma.<br \/>\n*   <strong>S\u0131n\u0131f A\u011f\u0131rl\u0131klar\u0131 (Class Weights):<\/strong> Model e\u011fitiminde az\u0131nl\u0131k s\u0131n\u0131f\u0131na daha y\u00fcksek a\u011f\u0131rl\u0131klar atama (Scikit-learn s\u0131n\u0131fland\u0131r\u0131c\u0131lar\u0131n\u0131n \u00e7o\u011funda <code>class_weight<\/code> parametresi bulunur).<br \/>\n*   F1-Skor, Duyarl\u0131l\u0131k, Hassasiyet gibi metrikleri kullanma, do\u011fruluk yerine.<\/p>\n<h4>Model Yorumlanabilirli\u011fi<\/h4>\n<p>Modelin neden belirli bir tahmin yapt\u0131\u011f\u0131n\u0131 anlamak, \u00f6zellikle kritik kararlar\u0131n al\u0131nd\u0131\u011f\u0131 alanlarda (sa\u011fl\u0131k, finans) \u00f6nemlidir.<br \/>\n*   <strong>\u00d6zellik \u00d6nem Dereceleri (Feature Importances):<\/strong> Karar a\u011fac\u0131 tabanl\u0131 modeller (Rastgele Orman gibi), her bir \u00f6zelli\u011fin tahmin \u00fczerindeki g\u00f6receli \u00f6nemini g\u00f6sterir.<br \/>\n*   <strong>SHAP (SHapley Additive exPlanations) ve LIME (Local Interpretable Model-agnostic Explanations):<\/strong> Bu k\u00fct\u00fcphaneler, karma\u015f\u0131k modellerin tahminlerini yerel veya genel olarak yorumlamaya yard\u0131mc\u0131 olur.<\/p>\n<h4>Modeli \u00dcretime Alma<\/h4>\n<p>E\u011fitilmi\u015f ve optimize edilmi\u015f bir modelin ger\u00e7ek d\u00fcnya uygulamalar\u0131nda kullan\u0131labilmesi i\u00e7in &#8220;\u00fcretime al\u0131nmas\u0131&#8221; gerekir. Bu, modelin bir API arac\u0131l\u0131\u011f\u0131yla eri\u015filebilir hale getirilmesi, bulut platformlar\u0131na da\u011f\u0131t\u0131lmas\u0131 veya bir uygulamaya entegre edilmesi anlam\u0131na gelebilir. Scikit-learn modelleri genellikle <code>joblib<\/code> veya <code>pickle<\/code> k\u00fct\u00fcphaneleri kullan\u0131larak kaydedilir ve daha sonra y\u00fcklenerek tahminler yapmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, Python ve Scikit-learn kullanarak bir makine \u00f6\u011frenimi s\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 olu\u015fturman\u0131n temel ad\u0131mlar\u0131n\u0131 detayl\u0131 bir \u015fekilde inceledik. Veri k\u00fcmesi se\u00e7imi ve haz\u0131rl\u0131\u011f\u0131ndan, model se\u00e7imi, e\u011fitim, de\u011ferlendirme ve hiperparametre ayarlamas\u0131na kadar t\u00fcm s\u00fcreci ele ald\u0131k. Scikit-learn&#8217;in tutarl\u0131 API yap\u0131s\u0131, zengin algoritma k\u00fct\u00fcphanesi ve g\u00fc\u00e7l\u00fc \u00f6n i\u015fleme ara\u00e7lar\u0131 sayesinde, bu ad\u0131mlar\u0131n ne kadar kolay ve etkili bir \u015fekilde ger\u00e7ekle\u015ftirilebilece\u011fini g\u00f6rd\u00fck.<\/p>\n<p>Makine \u00f6\u011frenimi yolculu\u011fu, sadece bir modeli e\u011fitmekle bitmez. S\u00fcrekli veri toplama, modelin performans\u0131n\u0131 izleme, gerekti\u011finde yeniden e\u011fitim ve yeni algoritmalar\u0131 ke\u015ffetme gibi s\u00fcre\u00e7leri i\u00e7erir. Bu makalede sunulan bilgiler, s\u0131n\u0131fland\u0131rma problemlerine yakla\u015f\u0131m\u0131n\u0131z i\u00e7in sa\u011flam bir temel olu\u015fturacakt\u0131r. Unutmay\u0131n ki, ba\u015far\u0131l\u0131 bir makine \u00f6\u011frenimi projesi, sadece teknik bilgiye de\u011fil, ayn\u0131 zamanda problem alan\u0131n\u0131 derinlemesine anlamaya ve iteratif bir yakla\u015f\u0131ma da dayan\u0131r. Bu ad\u0131mlar\u0131 uygulayarak ve farkl\u0131 veri k\u00fcmeleri ile deneyler yaparak makine \u00f6\u011frenimi becerilerinizi geli\u015ftirmeye devam edebilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Python ve Scikit-learn ile Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 Nas\u0131l Olu\u015fturulur?\nGiri\u015f\nMakine \u00f6\u011frenimi, g\u00fcn\u00fcm\u00fcz teknolojisinin en h\u0131zl","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1403],"tags":[],"class_list":{"0":"post-38388","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-python","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python ve Scikit-learn ile Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 Nas\u0131l Olu\u015fturulur? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python ve Scikit-learn ile Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 Nas\u0131l Olu\u015fturulur?\" \/>\n<meta property=\"og:description\" content=\"Python ve Scikit-learn ile Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 Nas\u0131l Olu\u015fturulur? Giri\u015f Makine \u00f6\u011frenimi, g\u00fcn\u00fcm\u00fcz teknolojisinin en h\u0131zl\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-30T02:40:43+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Python ve Scikit-learn ile Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 Nas\u0131l Olu\u015fturulur?\",\"datePublished\":\"2026-01-30T02:40:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/\"},\"wordCount\":3392,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Python\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/\",\"name\":\"Python ve Scikit-learn ile Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 Nas\u0131l Olu\u015fturulur? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-30T02:40:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python ve Scikit-learn ile Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 Nas\u0131l Olu\u015fturulur?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Python ve Scikit-learn ile Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 Nas\u0131l Olu\u015fturulur? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/","og_locale":"tr_TR","og_type":"article","og_title":"Python ve Scikit-learn ile Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 Nas\u0131l Olu\u015fturulur?","og_description":"Python ve Scikit-learn ile Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 Nas\u0131l Olu\u015fturulur? Giri\u015f Makine \u00f6\u011frenimi, g\u00fcn\u00fcm\u00fcz teknolojisinin en h\u0131zl","og_url":"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-30T02:40:43+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Python ve Scikit-learn ile Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 Nas\u0131l Olu\u015fturulur?","datePublished":"2026-01-30T02:40:43+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/"},"wordCount":3392,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Python"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/","url":"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/","name":"Python ve Scikit-learn ile Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 Nas\u0131l Olu\u015fturulur? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-30T02:40:43+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/python-ve-scikit-learn-ile-makine-ogrenimi-siniflandiricisi-nasil-olusturulur\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Python ve Scikit-learn ile Makine \u00d6\u011frenimi S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 Nas\u0131l Olu\u015fturulur?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38388","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=38388"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38388\/revisions"}],"predecessor-version":[{"id":38389,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38388\/revisions\/38389"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}