Python: Machine Learning Menggunakan Linear Regression Univariate


Pada catatan ini dibahas mengenai Linear Regression Univariate untuk Machine Learning. Contoh program sengaja dibagi 2 bagian. Bagian pertama adalah bagian dimana kita mencoba mencari feature mana yang paling berpengaruh terhadap nilai label.

Catatan ini bertujuan kita lebih memahami feature dan label serta cara melakukan training model. Oleh karena itu dipilih algoritma paling sederhana yaitu Linear Regression Univariate. Pada catatan ini juga kita belum melakukan prediksi.

Pada catatan ini juga kita belum memisahkan data training dan data testing agar tidak terlalu rumit.

Data yang digunakan adalah data boston housing dapat didownload (housing.data dan housing.names) disini https://archive.ics.uci.edu/ml/machine-learning-databases/housing/

Awal, adalah kita mencoba mengerti dahulu data seperti apa. kita import data menggunakan fungsi pandas yaitu read_csv, karena format pemisah pada data adalah menggunakan white space dan tidak memiliki header, maka kita menambahkan parameter delim_whitespace=True dan header=None

Lalu kita beri nama masing masing kolom sesuai aturan yang diberikan pada file housing.names yang didownload pada link diatas.



Pada tahap awal, kita menggunakan fungsi dari library pandas yaitu .corr() untuk melihat kolerasi antara feature terhadap label (dalam hal ini feature adalah kolom selain MEDV)


Kita juga bisa menggunakan heatmap, karena graphic dan warna dapat memudahkan kita melihat kolerasi antar variable.


Dapat kita lihat RM paling mempengaruhi MEDV, oleh karena itu RM akan kita gunakan sebagai feature untuk membuat model. Karena univariate maka hanya digunakan kolom RM saja.


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns


df = pd.read_csv('housing.data', delim_whitespace=True, header=None)

df.columns = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']

pd.options.display.float_format = '{:,.3f}'.format
df.corr()

plt.figure(figsize=(16,10))
sns.heatmap(df.corr(), annot=True)
plt.show()


Feature telah ditentukan, yaitu column RM, definisikan variable X. Perlu diperhatikan input yang dibutuhkan model adalah matrix 2, karena itu digunakan perintah reshape(-1, 1).

Untuk label adalah y diisi dengan nilai dari kolom MEDV

Setelah feature dan label ditentukan, berikutnya adalah melakukan fit terhadap model untuk melakukan training.

Hasil training dapat dilihat dengan melakukan perintah regplot dari library seaborn. Dapat dilihat Linear Regression kurang memuaskan karena sangat mudah dipengaruhi oleh data outlier.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

from sklearn.linear_model import LinearRegression


df = pd.read_csv('housing.data', delim_whitespace=True, header=None)

df.columns = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']

X = df['RM'].values.reshape(-1,1)
y = df['MEDV'].values

model = LinearRegression()
model.fit(X, y)

plt.figure(figsize=(12,10))
sns.regplot(X, y)
plt.xlabel('Avg num of room per dwelling')
plt.ylabel('Med val of owner-occupied homes in $1000')
plt.show()



Perhatian: pada program ini digunakan modul numpy, pandas, matplotlib, scikit-learn,  dan seaborn. Bila melakukan instalasi masing-masing library, akan cukup merepotkan. Dianjurkan menggunakan Anaconda. Boleh dibilang Anaconda itu seperti evironment manager untuk melakukan proyek data science dan machine learning.
Python: Machine Learning Menggunakan Linear Regression Univariate Python: Machine Learning Menggunakan Linear Regression Univariate Reviewed by noname needed on May 24, 2018 Rating: 5

No comments:

Powered by Blogger.