Anda hanya diwajibkan untuk mengumpulkan file ini saja ke uploader yang disediakan di http://elearning2.uai.ac.id/. Ganti nama file ini saat pengumpulan menjadi tugas1_NIM.ipynb.
Keterlambatan: Pengumpulan tugas yang melebihi tenggat yang telah ditentukan tidak akan diterima. Keterlambatan akan berakibat pada nilai nol untuk tugas ini.
Kolaborasi: Anda diperbolehkan untuk berdiskusi dengan teman Anda, tetapi dilarang keras menyalin kode maupun tulisan dari teman Anda.
Packages yang Anda akan gunakan dalam mengerjakan tugas ini antara lain:
Anda diperbolehkan (jika dirasa perlu) untuk mengimpor modul tambahan untuk tugas ini. Namun, seharusnya modul yang tersedia sudah cukup untuk memenuhi kebutuhan Anda. Untuk kode yang Anda ambil dari sumber lain, cantumkan URL menuju referensi tersebut jika diambil dari internet!
Perhatikan poin untuk tiap soal! Semakin kecil poinnya, berarti kode yang diperlukan untuk menjawab soal tersebut seharusnya semakin sedikit!
Nilai akhir: XX/40
Pada tugas kali ini, Anda akan mencoba menggunakan metode machine learning untuk melakukan dua jenis prediksi: regresi dan klasifikasi.
Untuk kasus regresi, Anda diminta untuk memprediksi jumlah penjualan berdasarkan uang yang dihabiskan pada media iklan yang digunakan. Terdapat tiga media iklan, yaitu TV, Radio dan Newspaper. Dengan detail atribut sebagai berikut:
Untuk kasus klasifikasi, Anda akan menggunakan dataset Food-101 yang memiliki 101 kategori makanan dengan total 101.000 gambar makanan. Dataset untuk tugas ini diambil dari Food-101 (https://www.vision.ee.ethz.ch/datasets_extra/food-101/). Untuk versi yang lebih sederhana, Anda hanya akan membandingkan apakah gambar yang diberikan berupa sushi atau pizza. Anda akan melakukan klasifikasi menggunakan algoritma regresi logistik dan neural networks dalam tugas ini.
In [ ]:
from __future__ import print_function, division # Gunakan print(...) dan bukan print ...
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
import random
import requests
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, mean_squared_error, r2_score
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
%matplotlib inline
RANDOM_STATE = 1337
np.random.seed(RANDOM_STATE)
In [ ]:
df = pd.read_csv('https://github.com/aliakbars/uai-ai/raw/master/datasets/advertising.csv', index_col=0)
In [ ]:
In [ ]:
In [ ]:
Kita akan membuat simple linear regression dengan satu fitur. Dalam kasus ini, mari mencoba melihat hubungan antara sales dengan biaya untuk media iklan di TV.
Ambil fitur dari kolom TV dan response dari kolom sales, kemudian buat sebuah model linear regression menggunakan pustaka scikit-learn dan latih model tersebut dengan data yang Anda miliki! Laporkan nilai bias dan koefisiennya. Lalu, jelaskan bagaimana intepretasi Anda terhadap koefisien dari model yang Anda miliki.
Petunjuk: Lihat cara penggunaan pustakanya di sini.
In [ ]:
Jawaban Anda di sini
Mari kita lihat seberapa baik garis regresi yang dibuat dari model yang Anda miliki. Buatlah prediksi dari biaya TV yang paling minimum dan biaya TV yang paling maksimum! Gambarkan scatter plot dan garis regresi model Anda atas prediksi tersebut. Bagaimana garis tersebut mencocokkan data Anda?
In [ ]:
In [ ]:
Salah satu cara untuk memastikan bahwa model yang Anda hasilkan sudah cukup baik pada model regresi adalah dengan menghitung nilai mean squared error (MSE). Coba hitung nilai MSE untuk regresi dengan dan tanpa fungsi basis polinomial seperti yang Anda kerjakan pada bagian a dan b. Apa yang dapat Anda amati? Apakah nilainya sesuai dengan ekspektasi Anda?
In [ ]:
Jawaban Anda di sini
Sekarang kita akan melakukan Multiple Linear Regression. Buatlah sebuah model dengan menggunakan Linear Regression dari scikit-learn untuk fitur TV, radio, dan newspaper. Variabel dependen yang digunakan adalah sales. Keluarkan pula nilai bias dan nilai koefisien ketiga fitur tersebut. Sebelum itu, bagi dataset menjadi data latih dan data uji dengan proporsi data uji sebanyak 20%.
In [ ]:
In [ ]:
Pertama, kita akan memuat data menggunakan kode di bawah ini. X merupakan gambar yang telah diterjemahkan dalam bentuk tensor atau array multidimensi. Dimensi pertama menunjukkan jumlah datanya, dua dimensi berikutnya menunjukkan panjang dan lebar dari gambarnya, dan dimensi keempat merupakan channels (RGB). Di sisi lain, y adalah kelas dari masing-masing gambar yang diberikan dalam X sehingga X.shape[0] == y.shape[0].
In [ ]:
def load_file(url):
filename = url.split('/')[-1]
with open(filename, 'wb') as f:
resp = requests.get(url)
f.write(resp.content)
return np.load(filename)
In [ ]:
X = load_file('https://github.com/aliakbars/uai-ai/raw/master/datasets/food.npy')
y = load_file('https://github.com/aliakbars/uai-ai/raw/master/datasets/food_labels.npy')
X.shape
In [ ]:
In [ ]:
In [ ]:
In [ ]:
Jawaban Anda di sini
Jawaban Anda di sini
Coba klasifikasikan data Food-101 untuk kedua jenis makanan diatas dengan menggunakan pustaka dari Keras untuk deep learning atau neural networks. Jangan lupa untuk melaporkan akurasi dan confusion matrix-nya. Adaptasi kode di atas dan lihat pula contoh kode di sini. Coba buat Convolutional Neural Network dan jalankan kodenya. Kode deep learning Anda hanya dinilai jika berhasil berjalan.
Petunjuk: Anda mungkin perlu mengubah dimensi dari data latih dan data uji Anda menjadi $n \times d \times d \times 1$ dengan 1 dimensi terakhir adalah channel hitam-putih. Nilainya bisa menjadi 3 jika kita menggunakan channel warna RGB.
Anda mungkin perlu menggunakan representasi one-of-K untuk label yang digunakan. Anda dapat menggunakan keras.utils.to_categorical untuk melakukan hal ini. Silakan mencontoh kode untuk deep neural networks sederhana di sini atau dengan menggunakan convolutional neural networks di sini.
In [ ]: