日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Svm实现多分类

發(fā)布時間:2023/12/9 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Svm实现多分类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

機器學(xué)習(xí)---Svm實現(xiàn)多分類詳解

  • Svm實現(xiàn)多類分類原理
    • 代碼實現(xiàn)
    • 訓(xùn)練的圖片

Svm實現(xiàn)多類分類原理

1.支持向量機分類算法最初只用于解決二分類問題,缺乏處理多分類問題的能力。后來隨著需求的變化,需要svm處理多分類分為。目前構(gòu)造多分類支持向
量機分類器的方法主要有兩類: 一類是“同時考慮所有分類”方法,另一類是組合二分類器解訣多分類問題。
第一類方法主要思想是在優(yōu)化公式的同時考慮所有的類別數(shù)據(jù),J.Weston 和C.Watkins 提出的“K-Class 多分類算法”就屬于這一類方法。該算法在經(jīng)典的SVM理論的基礎(chǔ)上,重新構(gòu)造多類分類型,同時考慮多個類別,然后將問題也轉(zhuǎn)化為-個解決二次規(guī)劃(Quadratic Programming,簡稱QP)問題,從而實現(xiàn)多分類。該算法由于涉及到的變量繁多,選取的目標函數(shù)復(fù)雜,實現(xiàn)起來比較困難,計算復(fù)雜度高。
第二類方法的基本思想是通過組合多個二分類器實現(xiàn)對多分類器的構(gòu)造,常見的構(gòu)造方法有“一對一”(one-against-one)和“一對其余”(one-against-the rest兩種。 其中“一對一”方法需要對n類訓(xùn)練數(shù)據(jù)兩兩組合,構(gòu)建n(n- 1)/2個支持向量機,每個支持向量機訓(xùn)練兩種不同類別的數(shù)據(jù),最后分類的時候采取“投票”的方式?jīng)Q定分類結(jié)果。“一對其余”方法對n分類問題構(gòu)建n個支持向量機,每個支持向量機負責(zé)區(qū)分本類數(shù)據(jù)和非本類數(shù)據(jù)。該分類器為每個類構(gòu)造一個支持向量機, 第k個支持向量機在第k類和其余n-1個類之間構(gòu)造一個超平面,最后結(jié)果由輸出離分界面距離wx+ b最大的那個支持向量機決定。

本文將上述“一對其余”的SVM多分類方法對鶯尾花數(shù)據(jù)進行分類識別,并設(shè)法減少訓(xùn)練樣本個數(shù),提高訓(xùn)練速度。

代碼實現(xiàn)

#-*- coding:utf-8 -*- ''' @project: exuding-bert-all @author: exuding @time: 2019-04-23 09:59:52 ''' #svm 高斯核函數(shù)實現(xiàn)多分類 import matplotlib.pyplot as plt import numpy as np import tensorflow as tf from sklearn import datasetssess = tf.Session()#加載數(shù)據(jù)集,并為每類分離目標值 iris = datasets.load_iris() #提取數(shù)據(jù)的方法 x_vals = np.array([[x[0],x[3]] for x in iris.data])y_vals1 = np.array([1 if y==0 else -1 for y in iris.target]) y_vals2 = np.array([1 if y==1 else -1 for y in iris.target]) y_vals3 = np.array([1 if y==2 else -1 for y in iris.target]) #合并數(shù)據(jù)的方法 y_vals = np.array([y_vals1,y_vals2,y_vals3]) #數(shù)據(jù)集四個特征,只是用兩個特征就可以 class1_x = [x[0] for i,x in enumerate(x_vals) if iris.target[i]==0] class1_y = [x[1] for i,x in enumerate(x_vals) if iris.target[i]==0] class2_x = [x[0] for i,x in enumerate(x_vals) if iris.target[i]==1] class2_y = [x[1] for i,x in enumerate(x_vals) if iris.target[i]==1] class3_x = [x[0] for i,x in enumerate(x_vals) if iris.target[i]==2] class3_y = [x[1] for i,x in enumerate(x_vals) if iris.target[i]==2] #從單類目標分類到三類目標分類,利用矩陣傳播和reshape技術(shù)一次性計算所有的三類SVM,一次性計算,y_target的占位符維度是[3,None] batch_size = 50 x_data = tf.placeholder(shape = [None,2],dtype=tf.float32) y_target = tf.placeholder(shape=[3,None],dtype=tf.float32) #TODO prediction_grid = tf.placeholder(shape=[None,2],dtype=tf.float32) b = tf.Variable(tf.random_normal(shape=[3,batch_size])) #計算高斯核函數(shù) TODO gamma = tf.constant(-10.0) dist = tf.reduce_sum(tf.square(x_data),1) dist = tf.reshape(dist,[-1,1]) sq_dists = tf.add(tf.subtract(dist,tf.multiply(2.,tf.matmul(x_data,tf.transpose(x_data)))),tf.transpose(dist)) my_kernel = tf.exp(tf.multiply(gamma,tf.abs(sq_dists))) #擴展矩陣維度 def reshape_matmul(mat):v1 = tf.expand_dims(mat,1)v2 = tf.reshape(v1,[3,batch_size,1])return (tf.matmul(v2,v1)) #計算對偶損失函數(shù) model_output = tf.matmul(b,my_kernel) first_term = tf.reduce_sum(b) b_vec_cross = tf.matmul(tf.transpose(b),b) y_target_cross = reshape_matmul(y_target) second_term = tf.reduce_sum(tf.multiply(my_kernel,tf.multiply(b_vec_cross,y_target_cross)),[1,2]) loss = tf.reduce_sum(tf.negative(tf.subtract(first_term,second_term))) #創(chuàng)建預(yù)測核函數(shù) rA = tf.reshape(tf.reduce_sum(tf.square(x_data),1),[-1,1]) rB = tf.reshape(tf.reduce_sum(tf.square(prediction_grid),1),[-1,1]) pred_sq_dist = tf.add(tf.subtract(rA,tf.multiply(2.,tf.matmul(x_data,tf.transpose(prediction_grid)))),tf.transpose(rB)) pred_kernel = tf.exp(tf.multiply(gamma,tf.abs(pred_sq_dist))) #創(chuàng)建預(yù)測函數(shù),這里實現(xiàn)的是一對多的方法,所以預(yù)測值是分類器有最大返回值的類別 prediction_output = tf.matmul(tf.multiply(y_target,b),pred_kernel) prediction = tf.arg_max(prediction_output-tf.expand_dims(tf.reduce_mean(prediction_output,1),1),0) accuracy = tf.reduce_mean(tf.cast(tf.equal(prediction,tf.arg_max(y_target,0)),tf.float32)) #準備好核函數(shù),損失函數(shù),預(yù)測函數(shù)以后,聲明優(yōu)化器函數(shù)和初始化變量 my_opt = tf.train.GradientDescentOptimizer(0.01) train_step = my_opt.minimize(loss) init = tf.initialize_all_variables() sess.run(init) #該算法收斂的相當(dāng)快,所以迭代訓(xùn)練次數(shù)不超過100次 loss_vec = [] batch_accuracy = [] for i in range(100):rand_index = np.random.choice(len(x_vals),size=batch_size)rand_x = x_vals[rand_index]rand_y = y_vals[:,rand_index]sess.run(train_step,feed_dict={x_data:rand_x,y_target:rand_y})temp_loss = sess.run(loss,feed_dict={x_data:rand_x,y_target:rand_y})loss_vec.append(temp_loss)acc_temp = sess.run(accuracy,feed_dict={x_data:rand_x,y_target:rand_y,prediction_grid:rand_x})batch_accuracy.append(acc_temp)if(i+1)%25 ==0:print('Step #' + str(i+1))print('Loss #' + str(temp_loss))x_min,x_max = x_vals[:,0].min()-1,x_vals[:,0].max()+1 y_min,y_max = x_vals[:,1].min()-1,x_vals[:,1].max()+1 xx,yy = np.meshgrid(np.arange(x_min,x_max,0.02),np.arange(y_min,y_max,0.02)) grid_points = np.c_[xx.ravel(),yy.ravel()] grid_predictions = sess.run(prediction,feed_dict={x_data:rand_x,y_target:rand_y,prediction_grid:grid_points}) grid_predictions = grid_predictions.reshape(xx.shape) #繪制訓(xùn)練結(jié)果,批量準確度和損失函數(shù) #等高線圖 plt.contourf(xx,yy,grid_predictions,cmap=plt.cm.Paired,alpha=0.8) plt.plot(class1_x,class1_y,'ro',label = 'I.setosa') plt.plot(class2_x,class2_y,'kx',label = 'I.versicolor') plt.plot(class3_x,class3_y,'gv',label = 'T.virginica') plt.title('Gaussian Svm Results on Iris Data') plt.xlabel('Pedal Length') plt.ylabel('Sepal Width') plt.legend(loc='lower right') plt.ylim([-0.5,3.0]) plt.xlim([3.5,8.5]) plt.show()plt.plot(batch_accuracy,'k-',label='Accuracy') plt.title('Batch Accuracy') plt.xlabel('Generation') plt.ylabel('Sepal Width') plt.legend(loc = 'lower right') plt.show()plt.plot(loss_vec,'k--') plt.title('Loss per Generation') plt.xlabel('Generation') plt.ylabel('Loss') plt.show()

訓(xùn)練的圖片



總結(jié)

以上是生活随笔為你收集整理的Svm实现多分类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产中文字幕亚洲 | 中国女人特级毛片 | 黄瓜视频91 | 欧美另类一区二区 | 日韩精品一区二区亚洲av观看 | 中文字幕在线观看第一页 | 日韩中字在线 | 91国模少妇一区二区三区 | 五月天综合在线 | 日韩精品无码一区二区三区久久久 | av大西瓜| videos另类灌满极品另类 | av视觉盛宴 | 人妻互换 综合 | 久久久久伊人 | 成人免费看毛片 | 欧美午夜精品理论片 | 亚洲在线一区二区三区 | 日本免费一区二区三区 | 亚洲精品成人区在线观看 | 久久精品视频国产 | 好吊操视频这里只有精品 | 成都免费高清电影 | 激情五月综合色婷婷一区二区 | 懂色av蜜臀av粉嫩av分享吧最新章节 | 日本黄网在线观看 | 久热热| jizz久久 | 高h视频在线播放 | 国产五区 | 国产一区麻豆 | 狠狠av| 午夜精品欧美 | 色屁屁www| 色视频在线免费观看 | 精品午夜久久久 | 天堂免费在线视频 | 在线观看成年人网站 | 欧美自拍一区 | 午夜窝窝 | 激情伊人网 | 怡红院成人网 | 色男人的天堂 | 精品人妻少妇嫩草av无码专区 | 国精品人妻无码一区二区三区喝尿 | 午夜理伦三级做爰电影 | 一区二区三区韩国 | 超碰精品| 日日操狠狠操 | 国产 中文 字幕 日韩 在线 | 国产一级网站 | 日韩精品二区在线观看 | 精品国产av色一区二区深夜久久 | 中文字幕人妻色偷偷久久 | 日本少妇ⅹxxxxx视频 | 92久久精品一区二区 | 久久久av电影 | 日韩高清一二三区 | 日韩精品中字 | 67194午夜 | 国产靠逼视频 | 国产绳艺sm调教室论坛 | 午夜日韩在线观看 | 亚洲av无码一区二区乱子伦 | 中文字幕在线观看日韩 | 日本高清视频在线播放 | 免费观看一区二区三区 | 久久青青视频 | 91av国产视频 | 岛国色图 | 男插女视频免费 | 人妻少妇久久中文字幕 | 日韩精品久久久久久 | 欧美高清在线一区 | 人人干人人模 | 66亚洲一卡2卡新区成片发布 | av在线精品 | 精品动漫一区 | 好av| 狠狠干2017 | 青青青免费在线 | 91国产精品| 夜夜爽天天干 | www天堂网| 亚洲狠狠丁香婷婷综合久久久 | 波多野结衣视频网站 | 伊甸园精品区 | 成人片片 | 国产乱码精品一区二区三区不卡 | 宅男午夜影院 | 久久亚洲私人国产精品va | 欧美一级黄色片视频 | 国产二区精品视频 | 亚洲精品97久久 | 成人av不卡 | 日日摸夜夜添狠狠添久久精品成人 | 好男人.www| 中文字幕黑丝 | 国产色在线视频 |