Rumah > pembangunan bahagian belakang > Tutorial Python > K Regresi Jiran Terdekat, Regresi: Pembelajaran Mesin Terselia

K Regresi Jiran Terdekat, Regresi: Pembelajaran Mesin Terselia

王林
Lepaskan: 2024-07-17 22:18:41
asal
936 orang telah melayarinya

k-Regression Jiran Terdekat

Regresi

k-Nearest Neighbors (k-NN) ialah kaedah bukan parametrik yang meramalkan nilai output berdasarkan purata (atau purata wajaran) bagi titik data latihan k-hampir dalam ruang ciri. Pendekatan ini boleh memodelkan hubungan kompleks dalam data dengan berkesan tanpa menganggap bentuk fungsi tertentu.

Kaedah regresi k-NN boleh diringkaskan seperti berikut:

  1. Metrik Jarak: Algoritma menggunakan metrik jarak (biasanya jarak Euclidean) untuk menentukan "kedekatan" titik data.
  2. k Jiran: Parameter k menentukan bilangan jiran terdekat yang perlu dipertimbangkan semasa membuat ramalan.
  3. Ramalan: Nilai ramalan untuk titik data baharu ialah purata nilai k jiran terdekatnya.

Konsep Utama

  1. Bukan Parametrik: Tidak seperti model parametrik, k-NN tidak mengambil bentuk khusus untuk hubungan asas antara ciri input dan pembolehubah sasaran. Ini menjadikannya fleksibel dalam menangkap corak yang kompleks.

  2. Pengiraan Jarak: Pilihan metrik jarak boleh menjejaskan prestasi model dengan ketara. Metrik biasa termasuk jarak Euclidean, Manhattan dan Minkowski.

  3. Pilihan k: Bilangan jiran (k) boleh dipilih berdasarkan pengesahan silang. K yang kecil boleh membawa kepada pemasangan berlebihan, manakala k yang besar boleh melancarkan ramalan terlalu banyak, yang berpotensi tidak sesuai.

k-Contoh Regresi Jiran Terdekat

Contoh ini menunjukkan cara menggunakan regresi k-NN dengan ciri polinomial untuk memodelkan perhubungan yang kompleks sambil memanfaatkan sifat bukan parametrik k-NN.

Contoh Kod Python

1. Import Perpustakaan

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import PolynomialFeatures
from sklearn.neighbors import KNeighborsRegressor
from sklearn.metrics import mean_squared_error, r2_score
Salin selepas log masuk

Blok ini mengimport pustaka yang diperlukan untuk manipulasi data, plot dan pembelajaran mesin.

2. Jana Data Contoh

np.random.seed(42)  # For reproducibility
X = np.linspace(0, 10, 100).reshape(-1, 1)
y = 3 * X.ravel() + np.sin(2 * X.ravel()) * 5 + np.random.normal(0, 1, 100)
Salin selepas log masuk

Blok ini menjana data sampel yang mewakili perhubungan dengan beberapa bunyi, mensimulasikan variasi data dunia sebenar.

3. Pisahkan Set Data

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Salin selepas log masuk

Blok ini membahagikan set data kepada set latihan dan ujian untuk penilaian model.

4. Cipta Ciri Polinomial

degree = 3  # Change this value for different polynomial degrees
poly = PolynomialFeatures(degree=degree)
X_poly_train = poly.fit_transform(X_train)
X_poly_test = poly.transform(X_test)
Salin selepas log masuk

Blok ini menjana ciri polinomial daripada set data latihan dan ujian, membolehkan model menangkap perhubungan bukan linear.

5. Cipta dan Latih Model Regresi k-NN

k = 5  # Number of neighbors
knn_model = KNeighborsRegressor(n_neighbors=k)
knn_model.fit(X_poly_train, y_train)
Salin selepas log masuk

Blok ini memulakan model regresi k-NN dan melatihnya menggunakan ciri polinomial yang diperoleh daripada set data latihan.

6. Buat Ramalan

y_pred = knn_model.predict(X_poly_test)
Salin selepas log masuk

Blok ini menggunakan model terlatih untuk membuat ramalan pada set ujian.

7. Plot Keputusan

plt.figure(figsize=(10, 6))
plt.scatter(X, y, color='blue', alpha=0.5, label='Data Points')
X_grid = np.linspace(0, 10, 1000).reshape(-1, 1)
X_poly_grid = poly.transform(X_grid)
y_grid = knn_model.predict(X_poly_grid)
plt.plot(X_grid, y_grid, color='red', linewidth=2, label=f'k-NN Regression (k={k}, Degree {degree})')
plt.title(f'k-NN Regression (Polynomial Degree {degree})')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.grid(True)
plt.show()
Salin selepas log masuk

Blok ini mencipta plot taburan titik data sebenar berbanding nilai ramalan daripada model regresi k-NN, menggambarkan lengkung yang dipasang.

Output dengan k = 1:

K nearest Neighbours 1

Output dengan k = 10:

K nearest Neighbours 10

Pendekatan berstruktur ini menunjukkan cara melaksanakan dan menilai regresi k-Nearest Neighbors dengan ciri polinomial. Dengan menangkap corak tempatan melalui purata tindak balas jiran berdekatan, regresi k-NN secara berkesan memodelkan hubungan kompleks dalam data sambil menyediakan pelaksanaan yang mudah. Pilihan darjah k dan polinomial mempengaruhi prestasi dan fleksibiliti model dengan ketara dalam menangkap trend asas.

Atas ialah kandungan terperinci K Regresi Jiran Terdekat, Regresi: Pembelajaran Mesin Terselia. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan