{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Data Preprocessing\n", "\n", "# Importing the libraries\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Importing the dataset\n", "url ='https://raw.githubusercontent.com/cagriemreakin/Machine-Learning/master/1-%20Data%20Preprocessing/dataset.csv'\n", "dataset = pd.read_csv(url)\n", "X = dataset.iloc[:, :-1].values\n", "y = dataset.iloc[:, 3].values" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Dealing with missing data\n", "from sklearn.preprocessing import Imputer #Imputer Class' ının yüklenmesi\n", "\n", "# Missing_values : Hangi değerler üzerinde işlem yapmak istediğimizi belirtme\n", "# Strategy: Bu değerleri ne ile değiştirmek istediğimiz.\n", "# axis= satır mı sütun mu\n", "imputer = Imputer(missing_values = 'NaN', strategy = 'mean', axis = 0) \n", "# Veri setimizde NaN değere sahip sütunlar; Age 1. Salary ise 2. eleman olduğundan\n", "\n", "imputer = imputer.fit(X[:, 1:3])\n", "X[:, 1:3] = imputer.transform(X[:, 1:3])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([['France', 44.0, 72000.0],\n", " ['Spain', 27.0, 48000.0],\n", " ['Germany', 30.0, 54000.0],\n", " ['Spain', 38.0, 61000.0],\n", " ['Germany', 40.0, 63777.77777777778],\n", " ['France', 35.0, 58000.0],\n", " ['Spain', 38.77777777777778, 52000.0],\n", " ['France', 48.0, 79000.0],\n", " ['Germany', 50.0, 83000.0],\n", " ['France', 37.0, 67000.0]], dtype=object)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Yukarıda X[0] sütunundaki değerlerin kategorik olduğunu görüyoruz.Kategorik değerlerden kurtulmak için LabelEncoder class' ını kullanrak bu labellar için değer atamamız gerekli." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0, 44.0, 72000.0],\n", " [2, 27.0, 48000.0],\n", " [1, 30.0, 54000.0],\n", " [2, 38.0, 61000.0],\n", " [1, 40.0, 63777.77777777778],\n", " [0, 35.0, 58000.0],\n", " [2, 38.77777777777778, 52000.0],\n", " [0, 48.0, 79000.0],\n", " [1, 50.0, 83000.0],\n", " [0, 37.0, 67000.0]], dtype=object)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Encoding categorical data\n", "from sklearn.preprocessing import LabelEncoder\n", "labelencoder_X = LabelEncoder()\n", "X[:, 0] = labelencoder_X.fit_transform(X[:, 0])\n", "X" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "X[0] sütunundaki değerlerin France:0, Spain:1, Germany:2 ile değiştiğini gördük.Fakat bu da başka bir problemi meydana getirdi. Makine öğrenmesi algoritmaları matematiksel formuller ile çalıştığından hesaplamlarda bu değerleri kullanacak ve yanlış sonuçlar çıkarmamıza sebep olacaktır. Aslında yukarıdaki işlemi yaptığımızda şöyle bir varsayım yapmış olduk:
Germany > Spain > France
\n", " | France | \n", "Spain | \n", "Germany | \n", "
---|---|---|---|
0 | \n", "1 | \n", "0 | \n", "0 | \n", "
1 | \n", "0 | \n", "1 | \n", "0 | \n", "
2 | \n", "0 | \n", "0 | \n", "1 | \n", "
3 | \n", "0 | \n", "1 | \n", "0 | \n", "
4 | \n", "0 | \n", "0 | \n", "1 | \n", "
5 | \n", "1 | \n", "0 | \n", "0 | \n", "
6 | \n", "0 | \n", "1 | \n", "0 | \n", "
7 | \n", "1 | \n", "0 | \n", "0 | \n", "
8 | \n", "0 | \n", "0 | \n", "1 | \n", "
9 | \n", "1 | \n", "0 | \n", "0 | \n", "