import pandas as pdpython
# 導入第三方模塊
from sklearn import svm
from sklearn import model_selection
from sklearn import metricsdom
# 讀取外部數據
letters = pd.read_csv(r'F:\\python_Data_analysis_and_mining\\13\\letterdata.csv')
print(letters.shape)
# 數據前5行
print(letters.head())
# 將數據拆分爲訓練集和測試集
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 = {'C':C}
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)
# 返回交叉驗證後的最佳參數值
print(grid_linear_svc.best_params_, grid_linear_svc.best_score_)
# 模型在測試集上的預測
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 = {'kernel':kernel,'C':C}
grid_svc = model_selection.GridSearchCV(estimator = svm.SVC(),param_grid =parameters,scoring='accuracy',cv=5,verbose =1)
# 模型在訓練數據集上的擬合
grid_svc.fit(X_train,y_train)
# 返回交叉驗證後的最佳參數值
print(grid_svc.best_params_, grid_svc.best_score_)rest
# 模型在測試集上的預測
pred_svc = grid_svc.predict(X_test)
# 模型的預測準確率
metrics.accuracy_score(y_test,pred_svc)orm
# 讀取外部數據
forestfires = pd.read_csv(r'F:\\python_Data_analysis_and_mining\\13\\forestfires.csv')
print(forestfires.shape)
# 數據前5行
print(forestfires.head())
# 刪除day變量
forestfires.drop('day',axis = 1, inplace = True)
# 將月份做數值化處理
forestfires.month = pd.factorize(forestfires.month)[0]
# 預覽數據前5行
print(forestfires.head())blog
# 導入第三方模塊
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 = {'color':'steelblue'},
kde_kws = {'color':'red', 'label':'Kernel Density'},
fit_kws = {'color':'black','label':'Nomal', 'linestyle':'--'})
# 顯示圖例
plt.legend()
# 顯示圖形
plt.show()ip
# 導入第三方模塊
from sklearn import preprocessing
import numpy as np
from sklearn import neighborsci
# 對area變量做對數變換
y = np.log1p(forestfires.area)
# 將X變量做標準化處理
predictors = forestfires.columns[:-1]
X = preprocessing.scale(forestfires[predictors])
print(X.shape)
print(X)
# 將數據拆分爲訓練集和測試集
X_train,X_test,y_train,y_test = model_selection.train_test_split(X, y, test_size = 0.25, random_state = 1234)pandas
# 構建默認參數的SVM迴歸模型
svr = svm.SVR()
# 模型在訓練數據集上的擬合
svr.fit(X_train,y_train)
# 模型在測試上的預測
pred_svr = svr.predict(X_test)
# 計算模型的MSE
a = metrics.mean_squared_error(y_test,pred_svr)
print(a)
# 使用網格搜索法,選擇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 = {'epsilon':epsilon,'C':C,'gamma':gamma}
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值
print(metrics.mean_squared_error(y_test,pred_grid_svr))it