Articles » Sains dan Teknologi » Konsep » Pemula di Bidang Data Science? Yuk Pelajari 4 Module Python Ini!

Pemula di Bidang Data Science? Yuk Pelajari 4 Module Python Ini!

Data science adalah salah satu topik di bidang IT yang paling banyak dikerjakan akhir-akhir ini. Seiring dengan perkembangan big data, pastinya data scientist adalah salah satu IT jobdesk yang akan sangat dibutuhkan. Oleh karena itu, perlu bagi kalian yang bekerja di bidang IT untuk belajar dasar-dasar data science.

Bicara soal bahasa pemrograman untuk data science, saat ini python menduduki posisi kedua dengan pengguna terbanyak. Oleh karena itu saat ini pekerjaan yang berhubungan dengan data atau visualisasi data banyak diselesaikan dengan bahasa Python. Selain mudah diaplikasikan, Python juga mempunyai banyak sekali modul yang dapat digunakan untuk data science.

Hal ini sangat membantu para data scientist mengelola data, dan membantu programmer dengan AI dan machine learning bergerak dengan cepat. Nah, ingin tahu apa saja module Python yang bisa kalian gunakan untuk support project data science bagi pemula? Silahkan simak 4 Python module rekomendasi Indowhiz berikut ini!

Data Science Module

Tiga modul utama yang bisa kalian digunakan untuk komputasi ilmiah di bidang data science adalah NumPy, SciPy dan MatPlotLib. Mereka menawarkan berbagai alat untuk grafik ke fungsi trigonometri, untuk menghitung persamaan diferensial, dan masih banyak lagi. Jika Anda ingin menjadi data scientist, dari sinilah kalian harus memulai.

1. NumPy

NumPy memperkenalkan objek untuk array dan matriks multidimensi. Selain itu NumPy juga memberikan solusi untuk rmelakukan perhitungan fungsi matematika dan statistik tingkat lanjut pada array dengan kode sesedikit mungkin. Untuk belajar NumPy dari dari dokumentasi yang disediakan, kalian bisa mengunjungi numpy.org.

Saat ini Numpy menawarkan banyak sekali library yang bisa diakses oleh banyak bidang ilmu dan objek penelitian. Berikut adalah beberapa library untuk berbagai bidang ilmu yang mendukung atau dikembangkan dengan NumPy.

Quantum ComputingSignal ProcessingImage ProcessingAstronomy ProcessesGeographic Processing
QuTiPSciPyScikit-imageAstroPyShapely
PyQuilPyWaveletsOpenCVSunPyGeoPandas
Qiskitpython-controlMahotasSpacePyFolium
Geoscience (GIS)Statistical ComputingGraphs and NetworksBio InformaticsMathematical Analysis
PangeoPandasNetworkXBioPythonSciPy
Simpegstatsmodelsgraph-toolScikit-BioSymPy
ObsPyXarrayigraphPyEnsemblcvxpy
Fatiando a TerraSeabornPyGSPETEFEniCS

2. SciPy

Dari sekian banyak module atau library yang dibangun dengan Numpy, SciPy adalah yang paling dibutuhkan oleh data scientist. SciPy dibangun menggunakan NumPy dengan menambahkan kumpulan algoritma dan perintah tingkat tinggi untuk memanipulasi dan memvisualisasikan data. Library ini mencakup fungsi untuk menghitung integral secara numerik, menyelesaikan persamaan diferensial, optimasi, dan banyak lagi.

Jika kalian ingin belajar SciPy langsung dari dokumentasinya, kalian bisa kunjungi link web SciPy. Kalian juga dapat menemukan semua fungsi matematika yang disediakan SciPy dalam dokumentasinya.

3. Pandas

Pandas adalah Python library untuk struktur data dan perhitungan statistik. Pandas dipilih karena punya objek DataFrame yang cepat dan efisien untuk manipulasi data dengan pengindeksan yang terintegrasi. Selain itu, Pandas merupakan alat untuk membaca dan menulis data antara struktur data dalam memori dan format yang berbeda: CSV dan file teks, Microsoft Excel, database SQL, dan format HDF5 dengan cepat.

Masih banyak keunggulan lain yang ditawarkan Pandas dalam hal pengolahan data misalnya penyelarasan data yang cerdas, otomatis dalam komputasi dan dengan mudah memanipulasi data yang berantakan menjadi bentuk yang teratur. Hal lain yang menjadi keunggulan Pandas adalah:

  • Kolom dapat disisipkan dan dihapus dari struktur data untuk perubahan ukuran;
  • Menggabungkan atau mengubah data yang memungkinkan operasi split-apply-combine pada kumpulan data;
  • Penggabungan kumpulan data dengan kinerja tinggi;
  • Pengindeksan sumbu hierarkis menyediakan cara intuitif untuk bekerja dengan data berdimensi tinggi dalam struktur data berdimensi lebih rendah;
  • Fungsi deret waktu: pembuatan rentang tanggal dan penggabungan deret waktu tanpa kehilangan data;
  • Sangat dioptimalkan untuk kinerja, dengan jalur kode penting yang ditulis dalam Python atau C.
  • Python dengan Pandas digunakan dalam berbagai domain akademik dan komersial, misalnya dalam bidang Keuangan, Ekonomi, Statistik, Periklanan, Analisis Web, Analisis Data, dan masih banyak lagi.

4. MatPlotLib

Module ini digunakan untuk membuat plot dan grafik 2D. Meskipun MatPlotLib memerlukan lebih banyak perintah, namun kalian dapat menghasilkan grafik yang cukup indah. MatPlotLib juga bisa membuat hampir semua jenis grafik yang kalian inginkan. Tentu saja banyaknya kode yang dibuat akan berbanding lurus dengan grafik yang dihasilkan dengan banyak kelebihan yaitu:

  • Dapat membuat Grafik dan plot sesuai dengan standar kualitas publikasi.
  • Dapat menyajikan gambar interaktif yang dapat diperbesar, digeser, dan diperbaharui.
  • Dapat menyesuaikan gaya dan tata letak visual sesuai kebutuhan.
  • Dapat disimpan (export) ke berbagai format file (.svg, .png, .pdf, .eps, and .ps)
  • Sudah terhubung dengan JupyterLab dan Antarmuka Pengguna Grafis (Graphical User Interfaces.).
  • Sudah banyak library pihak ketiga yang dibangun di Matplotlib.

Beikut adalah beberapa contoh grafik yang bisa dibuat dengan MatPlotLib.

Basic Plot

Tipe Basic Plot, biasanya y versus x.

Statistics Plot

Plot untuk analisis statistik.

Plots of Arrays and Fields

Membuat array data Z(x, y) dan bidang U(x, y), V(x, y).

Unstructured coordinates

Untuk data z pada koordinat (x,y) dan ingin divisualisasikan sebagai kontur.

Contoh Implementasi

Pada artikel kali ini saya akan memberikan contoh implementasi ketiga modul diatas untuk menyelesaikan kasus sederhana yang berkaitan dengan data science. Kita akan mengimplementasikan algoritma klasifikasi KNN untuk dataset Iris. Kalian dapat mengunduh datanya dari The UCI Machine Learning Repository.

Data latih menggunakan 50% dari dataset Iris dengan 75 baris data dan untuk data pengujian juga digunakan 50% dari dataset Iris dengan 75 baris. Dataset memiliki empat parameter pengukuran yang akan digunakan untuk pelatihan KNN, yaitu panjang sepal, lebar sepal, panjang petal, dan lebar petal. Selanjutnya, atribut spesies atau kelas akan digunakan sebagai atribut tujuan atau prediksi. Data akan diklasifikasikan sebagai Iris-setosa, Iris-versicolor, atau Iris-virginica.

Selain itu, artikel ini juga memberikan informasi tentang cara penerapan kode python dan teknologi atau modul yang digunakan untuk mengatasi masalah tersebut. Pada bagian akhir, akan ditampilkan pembahasan singkat hasil klasifikasi menggunakan KNN.

Python Module Yang Digunakan

  • Numpy: digunakan untuk struktur data dasar yang disajikan sebagai array Numpy.​
  • Pandas: digunakan untuk struktur data dan alat statistik.​
  • Matplotlib: digunakan untuk pembuatan grafik 2D.​

Implementasi

Ada satu file Python yang digunakan, kalian dapat memberi nama file tersebut Main.py. Kita akan menggunakan dua file data Pelatihan dan Pengujian yang disimpan pada file .csv. Kedua file tersebut akan disimpan dengan nama:

  • IrisTrainingData.csv
  • IrisTestingData.csv

dan jumlah maksimum k-neighbors adalah 1-75 sesuai dengan jumlah baris data.

1. Import Libraries:

import numpy as Numpy
import pandas as Pandas
import matplotlib.pyplot as Pyplot
import time

2. Start Time to seeing the computation time:

start_time = time.time()

3. Loading Dataset:

CSV_COLUMN_NAMES = ['SepalLength', 'SepalWidth','PetalLength', 'PetalWidth', 'Species']
TrainingPath, TestingPath = 'IrisTrainingData.csv', 'IrisTestingData.csv'
SPECIES = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica']

4. Membuat KNN Class:

class KNN():

5. Membuat Fungsi di dalam KNN Class:

## Function Initialization
## Parameter Description:
## k(int): The nearest k instances

def __init__(self, k):

        self.k = k
## Function for Load Training Data
## Parameter Description:
## TrainingPath(string): File path of the training dataset
## ColoumnName(string): Column name of the given dataset

def TrainingData(self, TrainingPath, ColoumnName='Species'):
        '''
        Load training data
        '''
        
        TrainingCSV = Pandas.read_csv(
            TrainingPath, header=-1, 
            names=CSV_COLUMN_NAMES).sample(frac=1).reset_index(drop=True)
        
        # Split the  training dataset into features and labels
        TrainingFS, self.TrainingLS = TrainingCSV, 
                                      TrainingCSV.pop(ColoumnName)
        # Normalize features
        self.norm_TrainingFS = (TrainingFS - TrainingFS.min()) / \
                               (TrainingFS.max() - TrainingFS.min())

        return self.norm_TrainingFS, self.TrainingLS
## Function for Getting Testing Data
## Parameter Description:
## TestingPath(string): File path of the testing dataset
## ColoumnName(string): Column name of the given name

def TestingData(self, TestingPath, ColoumnName='Species'):
        '''
        Load testing data
        '''
        
        TestingCSV = Pandas.read_csv(
            TestingPath, header=-1, 
            names=CSV_COLUMN_NAMES).sample(frac=1).reset_index(drop=True)
        
        # Split the  testing dataset into features and labels
        TestingFS, self.TestingLS = TestingCSV, TestingCSV.pop(ColoumnName)
        
        # Normalize features
        self.norm_TestingFS = (TestingFS - TestingFS.min()) / \
            (TestingFS.max() - TestingFS.min())

        return self.norm_TestingFS, self.TestingLS
## Function for Prediction the label of each testing
## Parameter Description:
## TestPoint ( < numpy.ndarray > ): Features data frame of testing data

def Prediction(self, TestPoint):
        '''
        Prediction the label of each testing
        '''
        Distance = []
        # Calculate the feature distances of given data points `TestPoint`
        # from the testing dataset `TrainingFS`
        for f in self.norm_TrainingFS.values:
            Distance.append(sum(map(abs, f - TestPoint)))
        
        # Binding feature distances with training labels
        _ = Pandas.DataFrame({"F": Distance, "L": self.TrainingLS})
        # Sorting above dataframe by features distance from low to high
        # Return the first k training labels
        _ = _.sort_values(by='F')['L'][0:self.k].values

        return _

6. Program Utama

# Initialization
TrainingAccuracy = []
TestingAccuracy = []
# K: from 1 to len(TrainingFS)
for k in range(75):
    knn = KNN(k=k + 1)
    # Load data
    TrainingFS, TrainingLS = knn.TrainingData(TrainingPath)
    TestingFS, TestingLS = knn.TestingData(TestingPath)
#Training Process
    correct = 0  # Number of the correct Prediction from Training
    for i, TestPoint in enumerate(TrainingFS.values, 0):
        _ = knn.Prediction(TestPoint)
        count = [list(_).count('Iris-setosa'),list(_).count('Iris- 
                versicolor'), list(_).count('Iris-virginica')]
        print('Distribution: {}'.format(count))
        mode = SPECIES[count.index(max(count))]
        if mode == TrainingLS[i]:
            correct += 1
        print('Prediction: {}'.format(mode), 'TEST_LABEL: 
              {}'.format(TrainingLS[i]),)
    
     TrainingAccuracy.append(correct / len(TrainingFS))
#Testing Process
    correct = 0  # Number of the correct Prediction from Testing
    for i, TestPoint in enumerate(TestingFS.values, 0):
        _ = knn.Prediction(TestPoint)
        count = [list(_).count('Iris-setosa'),list(_).count('Iris- 
                versicolor'), list(_).count('Iris-virginica')]
        print('Distribution: {}'.format(count))
        mode = SPECIES[count.index(max(count))]
        if mode == TestingLS[i]:
            correct += 1
        print('Prediction: {}'.format(mode), 'TEST_LABEL: 
             {}'.format(TestingLS[i]),)
    
    TestingAccuracy.append(correct / len(TestingFS))

7. Membuat Grafik Akurasi Pelatihan & Pengujian dengan k = 1 hingga 75

#Grapich of Testing Accuracy with k = 1 to 75
for (i, EachResult) in enumerate(TrainingAccuracy, 0):
    print('k: {}'.format(i + 1), 'Accuracy: {}'.format(EachResult))

Pyplot.figure()
Pyplot.plot(Numpy.arange(0, 75, 1), TrainingAccuracy, color='orange')
Pyplot.plot(Numpy.arange(0, 75, 1), TestingAccuracy, color='g')
Pyplot.legend(('Training Accuracy', 'Testing Accuracy'), loc=3)
Pyplot.title('k - Accuracy')
Pyplot.xlabel('Number of k')
Pyplot.ylabel('Accuracy')
Pyplot.show()

#Grapich of Testing Accuracy with k = 1 to 75
for (i, EachResult) in enumerate(TestingAccuracy, 0):
    print('k: {}'.format(i + 1), 'Accuracy: {}'.format(EachResult))
Pyplot.figure()
Pyplot.plot(Numpy.arange(0, 75, 1), TestingAccuracy, color='g')
Pyplot.title('k - Accuracy')
Pyplot.xlabel('Number of k')
Pyplot.ylabel('Accuracy')
Pyplot.show()

print("--- %s seconds ---" % (time.time() - start_time))

8. Grafik Akurasi Training dan Testing menggunakan KNN


Silahkan dicoba dan semoga bermanfaat.

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.