iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
AI & Data

紮實的ML機器學習原理~打造你對資料使用sklearn的靈敏度系列 第 8

DAY 8 「 SVM(Support Vector Machine)」非線性分類案例 - 圓環數據集和回歸案例 - 波士頓房價預測案例實作~

  • 分享至 

  • xImage
  •  

終於進到強大的監督式學習算法SVM支持向量機應用於不論分類還是回歸問題~~

/images/emoticon/emoticon01.gif白話說SVM就是在特徵空間中找到一個超平面,這個超平面可以把不同類別的數據分開得最遠~~

SVC(Support Vector Classification):用於分類問題的 SVM
SVR(Support Vector Regression):用於回歸問題的 SVM
NuSVC:支持 nu 參數的分類器
NuSVR:支持 nu 參數的回歸器

主要參數:
C:正則化參數,控制了模型的覆雜度,較小的 C 會導致模型較大的間隔,但可能會出現分類錯誤
kernel:核函數,可以是線性核、多項式核、RBF(高斯徑向基)核等
degree:多項式核的階數
gamma:RBF 核的參數,控制了單個樣本對模型的影響程度
coef0:核函數中的獨立項
probability:是否啟用概率估計

from sklearn.datasets import make_circles
import matplotlib.pyplot as plt

# 生成圓環數據集
X, y = make_circles(n_samples=100, noise=0.1, factor=0.3, random_state=42)

# 初始化 SVM 模型(使用高斯 RBF 核函數)
svm = SVC(kernel='rbf', C=1.0)

# 在訓練集上訓練模型
svm.fit(X, y)

# 繪製決策邊界
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis')
plot_decision_boundary(svm, X)
plt.xlabel('特徵 1')
plt.ylabel('特徵 2')
plt.title('非線性 SVM 分類')
plt.show()
from sklearn.datasets import load_boston
from sklearn.svm import SVR
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 載入波士頓房價數據集
boston = load_boston()
X, y = boston.data, boston.target

# 特徵標準化
scaler = StandardScaler()
X = scaler.fit_transform(X)

# 將數據集劃分為訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 初始化 SVR 模型
svr = SVR(kernel='linear', C=1.0)

# 在訓練集上訓練模型
svr.fit(X_train, y_train)

# 在測試集上進行預測
y_pred = svr.predict(X_test)

# 計算均方誤差
mse = mean_squared_error(y_test, y_pred)
print(f'均方誤差:{mse}')

上一篇
DAY 7 「 K-means聚類演算法」手寫數字數據集(如 MNIST 數據集)案例實作~
下一篇
DAY 9 「多元線性回歸(Linear Regression)」來做行銷活動預測啦~
系列文
紮實的ML機器學習原理~打造你對資料使用sklearn的靈敏度30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言