<jupyter_start><jupyter_text>02 Pembelajaran <NAME> -- Regresi

Oleh: <NAME> 
Tarikh: 3 Ogos 2021

Nota interaktif ini ditulis sebagai sebahagian daripada kursus _International Virtual Conference on Astrostatistics and Machine Learning_ (IVCASML2021).

---  0.0 MATLAMAT
1. Ingin menguji model regresi linear yang digunakan oleh `scikit-learn` menggunakan data yang dihasilkan secara rawak
2. Ingin menggunakan model regresi linear untuk mengenalpasti hubungkait antara suhu dan kekonduksian ---

 TUGAS A | DATA YANG DIHASILKAN SECARA RAWAK
 A-1.0 PERSIAPAN<jupyter_code>import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

from sklearn.linear_model import LinearRegression

%matplotlib inline<jupyter_output><empty_output><jupyter_text>A-1.1 PERSIAPAN DATA

Kita akan hasilkan plot garis lurus berserta hingar
$$y = mx + c + \text{hingar}$$<jupyter_code>sample_size = 100000
slope = 5
y_intercept = 0

fuzziness = 10.0 # Menetapkan darjah gangguan hingar

x_obs = np.random.uniform(low=0.0, high=100.0, size=sample_size)
noise = np.random.normal(loc=0.0, scale=fuzziness, size=sample_size)

# Garis lurus berserta hingar
y_obs = slope*x_obs + y_intercept + noise<jupyter_output><empty_output><jupyter_text>A-2.0 REGRESI LINEAR SCIKIT-LEARN

 A-2.1 PEMBENTUKAN SEMULA DATA
Kita perlu bentuk semula data menggunakan `nparray.reshape(-1,1)` supaya boleh dimuatkan dalam model `scikit-learn`<jupyter_code>x = x_obs.reshape(-1,1)

y = y_obs.reshape(-1,1)<jupyter_output><empty_output><jupyter_text>A-2.2 MENGGUNAKAN SCIKIT-LEARN
Kita dapati nilai yang diteka oleh `scikit-learn` adalah hampir dengan nilai yang kita tetapkan<jupyter_code># Menggunalan kelas LinearRegression daripada sklearn
model = LinearRegression()

model.fit(x, y)

print("Model meramalkan pemalar kecerunan ialah: ", model.coef_)
print("Pemalar kecerunan yang sebenar ialah: ", slope)
print("---")
print("Model meramalkan persilangan y ialah: ", model.intercept_)
print("Persilangan y yang sebenar ialah: ", y_intercept)<jupyter_output>Model meramalkan pemalar kecerunan ialah:  [[4.99984616]]
Pemalar kecerunan yang sebenar ialah:  5
---
Model meramalkan persilangan y ialah:  [-0.04170808]
Persilangan y yang sebenar ialah:  0<jupyter_text>TUGAS B | HUBUNGKAIT ANTARA SUHU DAN KEKONDUKSIAN
 B-1.0 PERSIAPAN
Datanya diperoleh daripada `../dataset/Temp_vs_Cond.csv`<jupyter_code>df = pd.read_csv('../dataset/Temp_vs_Cond.csv')

df
df.plot(kind='scatter', x='Temperature',y='Conductance')
plt.xlabel('Suhu')
plt.ylabel('Kekonduksian')
plt.title('Suhu vs Kekonduksian')<jupyter_output><empty_output><jupyter_text>B-2.0 MENGGUNAKAN SCIKIT-LEARN

 B-2.1 MEMUATKAN DATA
Kita bentukkan data yang guna `nparray.reshape(-1,1)` kemudian masukkan dalam `LinearRegression`<jupyter_code>T = df['Temperature'].to_numpy().reshape(-1,1)
C = df['Conductance'].to_numpy()

lr = LinearRegression()
lr.fit(T,C)
print('Pemalar =', lr.coef_)
print('Persilangan y =',lr.intercept_)<jupyter_output>Pemalar = [0.000108]
Persilangan y = 0.05360000000000003<jupyter_text>B-2.1 PLOT<jupyter_code>x = np.linspace(df['Temperature'].min(),df['Temperature'].max())
prediction = lr.coef_[0]*x + lr.intercept_

df.plot(kind='scatter', x='Temperature',y='Conductance', label="Data")
plt.plot(x, prediction, label="Ramalan")
plt.legend()
plt.title("Ramalan melawan data")<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11565626839317246, 'fraction_numerical': 0.031783402001177165, 'mean_word_length': 5.839034205231388, 'pattern_counts': {'":': 0, '<': 29, '<?xml version=': 0, '>': 29, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 1, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '91187', 'license': 'MIT', 'n_tokens_mistral': 1508, 'n_tokens_neox': 1401, 'n_words': 287, 'path': 'code/02 ms Regresi.ipynb', 'repo_name': 'Thaza-Kun/IVCASML2021', 'size': '3419'}