依照以下程序創建一個 Python Code:
以下是依照您提供的程序創建的 Python 代碼:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsRegressor
from sklearn.metrics import mean_squared_error, r2_score
# 1. 從 Excel 文件中加載數據
file_path = 'D:\\Python\\KNN_R_data_points.xlsx'
data = pd.read_excel(file_path)
# 確保數據集包含 'X' 和 'y' 列
if 'X' not in data.columns or 'y' not in data.columns:
raise ValueError("Excel 文件中必須包含 'X' 和 'y' 列")
X = data[['X']].values
y = data['y'].values
# 2. 使用 K-nearest neighbors (KNN) 回歸器來進行模型訓練
k_values = [3, 6, 9]
colors = ['red', 'green', 'blue']
# 生成一個範圍內的 X 值來進行預測
X_range = np.linspace(X.min(), X.max(), 300).reshape(-1, 1)
plt.figure(figsize=(10, 6))
plt.scatter(X, y, color='black', label='Data points')
for k, color in zip(k_values, colors):
knn = KNeighborsRegressor(n_neighbors=k)
knn.fit(X, y)
y_pred = knn.predict(X_range)
# 計算 MSE 和 R² score
y_train_pred = knn.predict(X)
mse = mean_squared_error(y, y_train_pred)
r2 = r2_score(y, y_train_pred)
# 在控制台顯示 MSE 和 R² score
print(f'K={k}: MSE={mse:.2f}, R²={r2:.2f}')
# 繪製預測結果
plt.plot(X_range, y_pred, color=color, label=f'K={k} (R²={r2:.2f})')
plt.xlabel('X')
plt.ylabel('y')
plt.title('KNN Regression with Different K Values')
plt.legend()
plt.show()
這段代碼完成了以下步驟:
請確保您已安裝所需的庫,例如 pandas
, numpy
, matplotlib
, 和 scikit-learn
。如果尚未安裝,可以使用以下命令進行安裝:
pip install pandas numpy matplotlib scikit-learn