本文的**親測有效,資料直接從網上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 我 分類學習的基本思想是基於訓練集...