SVM機器學習實戰1(含訓練資料集)

2021-08-27 03:48:44 字數 2206 閱讀 9380

本文的**親測有效,資料直接從網上load下來的,若想看源資料進入資料位址即可。第一次寫部落格也不會組織語言,將就著看看咯,主要是想為自己寫過的code留下一些印記,方便以後查證。

以下是sklearn中現成的應用辦法:

'''

邏輯回歸:from sklearn.linear_model import logisticregression

樸素貝葉斯:from sklearn.*****_bayes import gaussiannb

k-近鄰:from sklearn.neighbors import kneighborsclassifier

決策樹:from sklearn.tree import decisiontreeclassifier

支援向量機:from sklearn import svm

'''import numpy as np

from sklearn.utils import check_random_state

from sklearn import svm, datasets

import sklearn.model_selection as ms

import matplotlib.pyplot as plt

#資料位址 :

#load data

iris = datasets.load_iris()

rng = check_random_state(42)

perm = rng.permutation(iris.target.size)

iris_data = iris.data[perm]

iris_target = iris.target[perm]

#拆分資料

x_train, x_test, y_train, y_test = ms.train_test_split(iris_data, iris_target, random_state = 1, train_size = 0.6)

#訓練模型

for k in ('linear', 'rbf'):

clf = svm.svc(kernel=k).fit(x_train, y_train)

#列印**精度

print(np.mean(clf.predict(x_train) == y_train))

'''kernel='linear'時,為線性核,c越大分類效果越好,但有可能會過擬合(defaul c=1)

kernel='rbf'時(default),為高斯核,gamma值越小,分類介面越連續;gamma值越大,分類介面越「散」,分類效果越好,但有可能會過擬合。

decision_function_shape='ovr'時,為one v rest,即乙個類別與其他類別進行劃分,

decision_function_shape='ovo'時,為one v one,即將類別兩兩之間進行劃分,用二分類的方法模擬多分類的結果。

'''#畫圖

plt.rcparams['font.sans-serif'] = [u'simhei']

plt.rcparams['axes.unicode_minus'] = false

#畫出前兩個特徵的散點圖

x1_min, x1_max = iris_data[:, 0].min(), iris_data[:, 0].max() #第0列的範圍

x2_min, x2_max = iris_data[:, 1].min(), iris_data[:, 1].max() #第一列的範圍

plt.scatter(iris_data[:, 0], iris_data[:, 1], c = iris_target)

#plt.scatter(x_test[:, 0], x_test[:, 1], s=120, zorder=10 ) # 圈中測試集樣本

plt.xlabel(u'花萼長度', fontsize=13)

plt.ylabel(u'花萼寬度', fontsize=13)

plt.xlim(x1_min, x1_max)

plt.ylim(x2_min, x2_max)

plt.title(u'鳶尾花svm二特徵分類', fontsize=15)

plt.show()

以上資料集**出來的結果精確度為:0.988,是非常好的**結果,現實實際問題很難得到這樣的效果,可能主要原因還是我們實際處理問題時實際預處理,或者資料特徵不明確的原因。

機器學習實戰 6 (非線性SVM)

本部落格記錄 機器學習實戰 machinelearninginaction 的學習過程,包括演算法介紹和python實現。解決第乙個問題,即減小雜訊點的影響,可以通過鬆弛變數來完成。簡單地說就是用乙個變數對約束條件進行調整,從而容忍個別資料點被分錯。原本的問題是 min12 w 2,s.t.y i ...

機器學習實戰(1)

from numpy import import operator def createdataset object group array 1.0,1.0 1.0,1.1 0,0 0,0.1 labels a a b b return group,labels def classify0 inx,...

機器學習實戰 初識支援向量機 SVM

svm 支援向量機。支援向量機,其含義是通過支援向量運算的分類器。其中 機 的意思是機器,可以理解為分類器。它是一種二類分類模型,其基本模型定義為特徵空間上的間隔最大的線性分類器,其學習策略便是間隔最大化,最終可轉化為乙個凸二次規劃問題的求解。給定訓練樣本集d y 我 分類學習的基本思想是基於訓練集...