『』支持向量机(SVM)说明及示例( 二 )


# Visualising the Training set results from matplotlib.colors import ListedColormap X_set, y_set = X_train, y_train X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01), np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01)) plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('red', 'green'))) plt.xlim(X1.min(), X1.max()) plt.ylim(X2.min(), X2.max()) for i, j in enumerate(np.unique(y_set)): plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1], c = ListedColormap(('red', 'green'))(i), label = j) plt.title('Classifier (Training set)') plt.xlabel('Age') plt.ylabel('Estimated Salary') plt.legend() plt.show()结果
我们将使用线性和非线性的核来可视化svc对象的测试集
『』支持向量机(SVM)说明及示例
本文插图

线性核
『』支持向量机(SVM)说明及示例
本文插图

非线性核
算法实现(回归)
与上面的SVR模型相类似 。
import numpy as np import pandas as pd import matplotlib.pyplot as plt # import and split the data and classes dataset = pd.read_csv(''Position_Salaries.csv'') X = dataset.iloc[:, 1:-1].values Y = dataset.iloc[:, 2].values # features scaling from sklearn.preprocessing import StandardScaler sc_X = StandardScaler() sc_Y = StandardScaler() X = sc_X.fit_transform(X) Y = sc_Y.fit_transform(np.reshape(Y, (10,1))) # Fitting Regression modelto the dataset from sklearn.svm import SVR regressor = SVR() # add this parametre kernel='rbf' regressor.fit(X,Y) # predicts a new result with polyn reg y_pred = sc_Y.inverse_transform(regressor.predict(sc_X.transform(np.array([[8.5]])))) # Visualisation the regression result plt.scatter(x=X, y=Y,color='red') plt.plot(X, regressor.predict(X), color='green') plt.title('Truth of Bluff / SVR') plt.xlabel('Position level') plt.ylabel('Salary') plt.show()结果
我们需要了解SVM有几种类型的核(‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’) 。
『』支持向量机(SVM)说明及示例
本文插图

4.5的预测为130101.64 , 8.5为303706.02
我们将regressor = SVR()替换为regressor = SVR(kernel='rbf') , 然后重新运行程序
『』支持向量机(SVM)说明及示例
本文插图

而预测这里有115841.63(4.5)和403162.82(8.5)
最后
【『』支持向量机(SVM)说明及示例】SVM的限制包括:

  • SVM算法不适用于大型数据集 。
  • 当数据集的噪声较大时 , 支持向量机不能很好地工作 。
  • 如果每个数据点的样本数量超过了训练数据样本的数量 , SVM将会表现不佳 。
  • 由于支持向量分类器通过在分类超平面的上方和下方放置数据点来工作 , 因此没有概率解释 。


推荐阅读