sklearn中常用的分類演算法(模組名--函式名--演算法名):
(1) linear_model logisticregression 邏輯斯蒂回歸
(2)svm svc 支援向量機
(3)neighbors kneighborsclassifier k近鄰分類
(4)*****_bayes gaussiannb 高斯樸素貝葉斯
(5)tree decision treeclassifier 分類決策樹
(6)ensemble randomforestclassifier 隨機森林分類
(7)ensemble gradientboostingclassifier梯度提公升分類樹
使用sklearn估計器構建svm模型
##匯入各模組和所需函式
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.svm import svc
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import standardscaler
##cancer資料集特徵
cancer = load_breast_cancer()
cancer_data = cancer['data']
cancer_target = cancer['target']
cancer_names = cancer['feature_names']
## 將資料劃分為訓練集測試集
cancer_data_train,cancer_data_test, cancer_target_train,cancer_target_test = \
train_test_split(cancer_data,cancer_target,test_size = 0.2,random_state = 22)
## 資料標準化
stdscaler = standardscaler().fit(cancer_data_train)
cancer_trainstd = stdscaler.transform(cancer_data_train)
cancer_teststd = stdscaler.transform(cancer_data_test)
## 建立svm模型
svm = svc().fit(cancer_trainstd,cancer_target_train)
print('建立的svm模型為:\n',svm)
## **訓練集結果
cancer_target_pred = svm.predict(cancer_teststd)
print('**前20個結果為:\n',cancer_target_pred[:20])
將**結果和真實結果做對比,求出準確率,**如下:
## 求出**和真實一樣的數目
true = np.sum(cancer_target_pred == cancer_target_test )
print('**對的結果數目為:', true)
print('**錯的的結果數目為:', cancer_target_test.shape[0]-true)
print('**結果準確率為:', true/cancer_target_test.shape[0])
方法名稱——最佳值——sklearn函式
precision(精確率) 1.0 metrics.precision_score
recall(召回率) 1.0 metrics.recall_score
f1值 1.0 metrics.f1_score
roc曲線 最靠近y軸 metrics.roc_curve
**如下:
from sklearn.metrics import accuracy_score,precision_score, \
print('使用svm**breast_cancer資料的準確率為:',
accuracy_score(cancer_target_test,cancer_target_pred))
print('使用svm**breast_cancer資料的精確率為:',
precision_score(cancer_target_test,cancer_target_pred))
print('使用svm**breast_cancer資料的召回率為:',
recall_score(cancer_target_test,cancer_target_pred))
print('使用svm**breast_cancer資料的f1值為:',
f1_score(cancer_target_test,cancer_target_pred))
另外,sklearn的metrics模組除了提供precision等單一評價指標的函式外,還提供了乙個能輸出分類模型評價報告的函式classification_report,**如下:
from sklearn.metrics import classification_report除此之外,還可以用roc曲線的方式來評價分類模型,**如下:print('使用svm**iris資料的分類報告為:','\n',
classification_report(cancer_target_test,
cancer_target_pred))
from sklearn.metrics import roc_curve
import matplotlib.pyplot as plt
## 求出roc曲線的x軸和y軸
fpr, tpr, thresholds = roc_curve(cancer_target_test,cancer_target_pred)
plt.figure(figsize=(10,6))
plt.xlim(0,1) ##設定x軸的範圍
plt.ylim(0.0,1.1) ## 設定y軸的範圍
plt.xlabel('false postive rate')
plt.ylabel('true postive rate')
plt.plot(fpr,tpr,linewidth=2, linestyle="-",color='red')
plt.show()
SVM簡單分類的使用 sklearn機器學習
sklearn 庫中匯入 svm 模組 from sklearn import svm 定義三個點和標籤 x 2,0 1,1 2,3 y 0,0,1 定義分類器,clf 意為 classifier,是分類器的傳統命名 clf svm.svc kernel linear svc 就是 svm 的方程,...
用sklearn中的SVM畫資料的分類面
參考部落格 所用資料如下 如下,有詳細注釋 from sklearn import svm import numpy as np import matplotlib.pyplot as plt dataset np.array 1,2,1 2,3,1 3,3,1 2,1,1 3,2,1 x trai...
Sklearn構建k 近鄰分類器用於手寫數字識別
示例 使用k 近鄰演算法的手寫識別系統 1 收集資料 提供文字檔案。2 準備資料 編寫函式classify0 將影象格式轉換為分類器使用的list格式。3 分析資料 在python命令提示符中檢查資料,確保它符合要求。4 訓練演算法 此步驟不適用於k 近鄰演算法。5 測試演算法 編寫函式使用提供的部...