Tutorial Python

RUMAH Python Pengenalan Python Python Memulai Sintaks Python Komentar Python Variabel Python Tipe Data Python Nomor Python Pengecoran Python String Python Python Boolean Operator Python Daftar Python Tuple Python Set Python Kamus Python Python Jika...Lain Python Sementara Loop Python Untuk Loop Fungsi Python Python Lambda Array Python Kelas/Objek Python Warisan Python Python Iterator Lingkup Python Modul Python Tanggal Python Python Matematika Python JSON Python RegEx Python PIP Python Coba...Kecuali Masukan Pengguna Python Pemformatan String Python

Penanganan Berkas

Penanganan File Python File Baca Python Python Tulis/Buat File Python Hapus File

Modul Python

Tutorial NumPy Panduan Panda Tutorial sip

Python Matplotlib

Pengantar Matplotlib Matplotlib Memulai Matplotlib Pyplot Merencanakan Matplotlib Penanda Matplotlib Garis Matplotlib Label Matplotlib Kotak Matplotlib Subplot Matplotlib Penyebaran Matplotlib Matplotlib Bar Histogram Matplotlib Bagan Pai Matplotlib

Pembelajaran mesin

Mulai Mode Median Rata-rata Standar Deviasi Persentil Distribusi Data Distribusi Data Normal Plot Pencar Regresi linier Regresi Polinomial Regresi Berganda Skala Kereta/Tes Pohon Keputusan

Python MySQL

MySQL Memulai MySQL Buat Basis Data MySQL Buat Tabel Sisipan MySQL MySQL Pilih MySQL Dimana MySQL Dipesan Oleh Hapus MySQL Tabel Drop MySQL Pembaruan MySQL Batas MySQL MySQL Bergabung

Python MongoDB

MongoDB Memulai MongoDB Buat Basis Data MongoDB Buat Koleksi Sisipan MongoDB Temukan MongoDB Permintaan MongoDB Sortir MongoDB Hapus MongoDB Koleksi Jatuhkan MongoDB Pembaruan MongoDB Batas MongoDB

Referensi Python

Ikhtisar Python Fungsi bawaan Python Metode String Python Metode Daftar Python Metode Kamus Python Metode Tuple Python Metode Set Python Metode File Python Kata Kunci Python Pengecualian Python Daftar Istilah Python

Referensi Modul

Modul Acak Modul Permintaan Modul Statistik Modul Matematika Modul cMath

Python Bagaimana caranya?

Hapus Duplikat Daftar Membalikkan String Tambahkan Dua Angka

Contoh Python

Contoh Python Kompilator Python Latihan Python Kuis Python Sertifikat Python

Pembelajaran Mesin - Regresi Linier


Regresi

Istilah regresi digunakan ketika Anda mencoba mencari hubungan antar variabel.

Dalam Pembelajaran Mesin, dan dalam pemodelan statistik, hubungan itu digunakan untuk memprediksi hasil dari peristiwa di masa depan.


Regresi linier

Regresi linier menggunakan hubungan antara titik data untuk menggambar garis lurus melalui semua titik tersebut.

Garis ini dapat digunakan untuk memprediksi nilai masa depan.

Dalam Machine Learning, memprediksi masa depan sangat penting.


Bagaimana cara kerjanya?

Python memiliki metode untuk menemukan hubungan antara titik data dan menggambar garis regresi linier. Kami akan menunjukkan cara menggunakan metode ini alih-alih melalui rumus matematika.

Dalam contoh di bawah, sumbu x mewakili usia, dan sumbu y mewakili kecepatan. Kami telah mendaftarkan usia dan kecepatan 13 mobil saat mereka melewati gerbang tol. Mari kita lihat apakah data yang kami kumpulkan dapat digunakan dalam regresi linier:

Contoh

Mulailah dengan menggambar plot pencar:

import matplotlib.pyplot as plt

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

plt.scatter(x, y)
plt.show()

Hasil:

Contoh

Impor scipydan gambar garis Regresi Linier:

import matplotlib.pyplot as plt
from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

mymodel = list(map(myfunc, x))

plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()

Hasil:

Contoh Dijelaskan

Impor modul yang Anda butuhkan.

Anda dapat mempelajari tentang modul Matplotlib di Tutorial Matplotlib kami .

Anda dapat mempelajari tentang modul SciPy di Tutorial SciPy kami .

import matplotlib.pyplot as plt
from scipy import stats

Buat array yang mewakili nilai sumbu x dan y:

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

Jalankan metode yang mengembalikan beberapa nilai kunci penting dari Regresi Linier:

slope, intercept, r, p, std_err = stats.linregress(x, y)

Buat fungsi yang menggunakan slopedan interceptnilai untuk mengembalikan nilai baru. Nilai baru ini menunjukkan di mana pada sumbu y nilai x yang sesuai akan ditempatkan:

def myfunc(x):
  return slope * x + intercept

Jalankan setiap nilai larik x melalui fungsi. Ini akan menghasilkan larik baru dengan nilai baru untuk sumbu y:

mymodel = list(map(myfunc, x))

Gambarkan plot pencar asli:

plt.scatter(x, y)

Gambarkan garis regresi linier:

plt.plot(x, mymodel)

Menampilkan diagram:

plt.show()



R untuk Hubungan

Penting untuk diketahui bagaimana hubungan antara nilai sumbu x dan nilai sumbu y, jika tidak ada hubungan maka regresi linier tidak dapat digunakan untuk memprediksi apapun.

Hubungan ini - koefisien korelasi - disebut r.

Nilai rberkisar dari -1 hingga 1, di mana 0 berarti tidak ada hubungan, dan 1 (dan -1) berarti 100% terkait.

Python dan modul Scipy akan menghitung nilai ini untuk Anda, yang harus Anda lakukan adalah memberinya nilai x dan y.

Contoh

Seberapa cocok data saya dalam regresi linier?

from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

print(r)

Catatan: Hasil -0,76 menunjukkan bahwa ada hubungan, tidak sempurna, tetapi ini menunjukkan bahwa kita dapat menggunakan regresi linier dalam prediksi masa depan.


Prediksi Nilai Masa Depan

Sekarang kita dapat menggunakan informasi yang telah kita kumpulkan untuk memprediksi nilai masa depan.

Contoh: Mari kita coba meramal kecepatan mobil berumur 10 tahun.

Untuk melakukannya, kita memerlukan myfunc()fungsi yang sama dari contoh di atas:

def myfunc(x):
  return slope * x + intercept

Contoh

Memprediksi kecepatan mobil berusia 10 tahun:

from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

speed = myfunc(10)

print(speed)

Contoh memprediksi kecepatan pada 85,6, yang juga dapat kita baca dari diagram:


Cocok?

Mari kita buat contoh di mana regresi linier tidak akan menjadi metode terbaik untuk memprediksi nilai masa depan.

Contoh

Nilai untuk sumbu x dan y ini akan menghasilkan kecocokan yang sangat buruk untuk regresi linier:

import matplotlib.pyplot as plt
from scipy import stats

x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
  return slope * x + intercept

mymodel = list(map(myfunc, x))

plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()

Hasil:

Dan runtuk hubungan?

Contoh

Anda harus mendapatkan nilai yang sangat rendah r.

import numpy
from scipy import stats

x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

slope, intercept, r, p, std_err = stats.linregress(x, y)

print(r)

Hasilnya: 0,013 menunjukkan hubungan yang sangat buruk, dan memberi tahu kita bahwa kumpulan data ini tidak cocok untuk regresi linier.