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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

机器学习(18)-- SVM支持向量机(根据身高体重分类性别)

發布時間:2023/11/27 生活经验 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习(18)-- SVM支持向量机(根据身高体重分类性别) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、基礎理論

二、身高體重預測性別

1、獲取數據(男女生身高體重)

2、數據處理(合并數據)

3、設置標簽

4、創建分類器(支持向量機)

4-1、創建svm分類器

4-2、設置分類器屬性(線性核)

5、訓練

6、預測

總代碼


一、基礎理論

SVM本質:尋求一個最優的超平面進行分類。(分類器

SVM核:支持很多核(這里主要使用線性核)

左圖分類比較簡單,一條線就可以分類;

但右圖一條線明顯無法完成分類,這時則需要多條線甚至曲線才能完成分類。

這里用的是監督學習,所以必須要有label標簽(即目標值)

二、身高體重預測性別

1、獲取數據(男女生身高體重)

獲取男女生身高體重(訓練集、測試集)?

# 訓練集
girls_train = np.array([[155, 48], [159, 50], [165, 55], [158, 55], [170, 58]])
boys_train = np.array([[162, 56], [182, 68], [175, 62], [180, 72], [178, 66]])
# 測試集
girls_test = np.array([[152,46], [164,55]])
boys_test = np.array([[175,64], [182, 67]])

2、數據處理(合并數據)

# 2 合并數據(并轉浮點型,svm需要)
data = np.vstack((girls_train, boys_train))
data = np.array(data, dtype='float32')
print(data)
predict_data = np.vstack((girls_test, boys_test))
predict_data = np.array(predict_data, dtype='float32')
print(predict_data)

3、設置標簽

# 3 設置標簽(監督學習的目標值)(0:負樣本;1:正樣本)
label = np.array([[0],[0],[0],[0],[0],[1],[1],[1],[1],[1]])

4、創建分類器(支持向量機)

4-1、創建svm分類器

# 4-1 創建svm分類器
svm = cv2.ml.SVM_create()

4-2、設置分類器屬性(線性核)

# 4-2 設置分類器屬性
svm.setType(cv2.ml.SVM_C_SVC)       #svm 類型
svm.setKernel(cv2.ml.SVM_LINEAR)    #設置內核:線性核(最關鍵)
svm.setC(0.01)

5、訓練

根據訓練集和目標集,進行監督學習。?

# 5 訓練
svm.train(data, cv2.ml.ROW_SAMPLE, label)

6、預測

# 6 預測
print(svm.predict(predict_data))

可以看到,結果預測成功,前面兩個是女的(0),最后2個是男的(1),達到了想要的效果。

?

總代碼

# SVM支持向量機(根據身高體重預測性別)
import cv2
import numpy as np# 1 獲取數據(男女生身高體重)
# 訓練集
girls_train = np.array([[155, 48], [159, 50], [165, 55], [158, 55], [170, 58]])
boys_train = np.array([[162, 56], [182, 68], [175, 62], [180, 72], [178, 66]])
# 測試集
girls_test = np.array([[152,46], [164,55]])
boys_test = np.array([[175,64], [182, 67]])# 2 合并數據(并轉浮點型,svm需要)
train_data = np.vstack((girls_train, boys_train))
train_data = np.array(train_data, dtype='float32')
print(train_data)
test_data = np.vstack((girls_test, boys_test))
test_data = np.array(test_data, dtype='float32')
print(test_data)# 3 設置標簽(監督學習的目標值)(0:負樣本;1:正樣本)
label = np.array([[0],[0],[0],[0],[0],[1],[1],[1],[1],[1]])
# print(label)# 4 創建分類器(支持向量機)
# 4-1 創建svm分類器
svm = cv2.ml.SVM_create()# 4-2 設置分類器屬性
svm.setType(cv2.ml.SVM_C_SVC)       #svm 類型
svm.setKernel(cv2.ml.SVM_LINEAR)    #設置內核:線性核(最關鍵)
svm.setC(0.01)# 5 訓練
svm.train(train_data, cv2.ml.ROW_SAMPLE, label)
#         訓練集                          標簽(目標集)# 6 預測
print(svm.predict(test_data))

總結

以上是生活随笔為你收集整理的机器学习(18)-- SVM支持向量机(根据身高体重分类性别)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。