第十三章 SVM模型

2021-10-12 16:43:50 字數 4801 閱讀 1145

# 匯入第三方模組

from sklearn import svm

import pandas as pd

from sklearn import model_selection

from sklearn import metrics

# 讀取外部資料

letters = pd.read_csv(r'./letterdata.csv'

)# 資料前5行

letters.head(

)

letter

xbox

ybox

width

height

onpix

xbar

ybar

x2bar

y2bar

xybar

x2ybar

xy2bar

xedge

xedgey

yedge

yedgex0t

2835

18130

66108

0808

1i512

37210

55413

3928

4102d

41168

61062

61037

3739

3n711

6635

9464

410610

284g

2131

1866

6659

17510

# 將資料拆分為訓練集和測試集

predictors = letters.columns[1:

]x_train,x_test,y_train,y_test = model_selection.train_test_split(letters[predictors]

, letters.letter,

test_size =

0.25

, random_state =

1234

)

# 使用網格搜尋法,選擇線性可分svm「類」中的最佳c值c=[

0.05

,0.1

,0.5,1

,2,5

]parameters =

grid_linear_svc = model_selection.gridsearchcv(estimator = svm.linearsvc(

),param_grid =parameters,scoring=

'accuracy'

,cv=

5,verbose =1)

# 模型在訓練資料集上的擬合

grid_linear_svc.fit(x_train,y_train)

# 返回交叉驗證後的最佳引數值

grid_linear_svc.best_params_, grid_linear_svc.best_score_

fitting 5 folds for each of 6 candidates, totalling 30 fits
# 模型在測試集上的**

pred_ linear_svc = grid_linear_svc.predict(x_test)

# 模型的**準確率

metrics.accuracy_score(y_test, pred_linear_svc)

# 使用網格搜尋法,選擇非線性svm「類」中的最佳c值

kernel=

['rbf'

,'linear'

,'poly'

,'sigmoid']c=

[0.1

,0.5,1

,2,5

]parameters =

grid_svc = model_selection.gridsearchcv(estimator = svm.svc(

),param_grid =parameters,scoring=

'accuracy'

,cv=

5,verbose =1)

# 模型在訓練資料集上的擬合

grid_svc.fit(x_train,y_train)

# 返回交叉驗證後的最佳引數值

grid_svc.best_params_, grid_svc.best_score_

# 模型在測試集上的**

pred_svc = grid_svc.predict(x_test)

# 模型的**準確率

metrics.accuracy_score(y_test,pred_svc)

# 讀取外部資料

forestfires = pd.read_csv(r'c:\users\administrator\desktop\forestfires.csv'

)# 資料前5行

forestfires.head(

)

# 刪除day變數

forestfires.drop(

'day'

,axis =

1, inplace =

true

)# 將月份作數值化處理

forestfires.month = pd.factorize(forestfires.month)[0

]# 預覽資料前5行

forestfires.head(

)

# 匯入第三方模組

import seaborn as sns

import matplotlib.pyplot as plt

from scipy.stats import norm

# 繪製森林燒毀面積的直方圖

sns.distplot(forestfires.area, bins =

50, kde =

true

, fit = norm, hist_kws =

, kde_kws =

, fit_kws =

)# 顯示圖例

plt.legend(

)# 顯示圖形

plt.show(

)

# 匯入第三方模組

from sklearn import preprocessing

import numpy as np

from sklearn import neighbors

# 對area變數作對數變換

y = np.log1p(forestfires.area)

# 將x變數作標準化處理

predictors = forestfires.columns[:-

1]x = preprocessing.scale(forestfires[predictors]

)

# 將資料拆分為訓練集和測試集

x_train,x_test,y_train,y_test = model_selection.train_test_split(x, y, test_size =

0.25

, random_state =

1234

)

# 構建預設引數的svm回歸模型

svr = svm.svr(

)# 模型在訓練資料集上的擬合

svr.fit(x_train,y_train)

# 模型在測試上的**

pred_svr = svr.predict(x_test)

# 計算模型的mse

metrics.mean_squared_error(y_test,pred_svr)

# 使用網格搜尋法,選擇svm回歸中的最佳c值、epsilon值和gamma值

epsilon = np.arange(

0.1,

1.5,

0.2)

c= np.arange(

100,

1000

,200

)gamma = np.arange(

0.001

,0.01

,0.002

)parameters =

grid_svr = model_selection.gridsearchcv(estimator = svm.svr(

),param_grid =parameters,

scoring=

'neg_mean_squared_error'

,cv=

5,verbose =

1, n_jobs=2)

# 模型在訓練資料集上的擬合

grid_svr.fit(x_train,y_train)

# 返回交叉驗證後的最佳引數值

print

(grid_svr.best_params_, grid_svr.best_score_)

# 模型在測試集上的**

pred_grid_svr = grid_svr.predict(x_test)

# 計算模型在測試集上的mse值

metrics.mean_squared_error(y_test,pred_grid_svr)

第十三章 併發

13.1 動機 13.2 基本執行緒 如果必須要控制現成的執行順序,最好是根本不用執行緒,而是自己編寫特定順序彼此控制的協作子程式。繼承thread類或者實現runnable介面。內部類實現。13.3 共享受限資源 1 如果要對類中的某個方法進行同步控制,最好同步所有方法。如果忽略了其中乙個,通常很...

第十三章 類

1.類簡單地說是乙個性的資料型別。類當中有資料成員,和成員函式。類的基本思想就是體現出資料的抽象和封裝。2.這裡只需要說明乙個問題即可 就是類成員函式的const型別 class screen public const int get const int i const int j const 這裡...

第十三章 事件

1 事件的作用 事件是對委託的封裝,如同屬性對字段的封裝。封裝後可以在委託上實現更複雜的邏輯。1.1 封裝訂閱 委託允許使用 對其進行賦值,但向乙個委託例項賦值多個委託時,使用 會造成覆蓋之前的委託。事件只支援 或 對事件進行賦值 1.2 封裝發布 委託可以在其他類進行訪問,而事件可以確保只有包容類...