將資料集切分兩部分,一部分用來作為訓練模型,另一部分用來測試模型
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=
0.3, random_state=0)
'''引數:
x : 資料
y: 標籤
test_size: 測試集佔資料集的百分比,小數
random_state: 隨機數種子
'''
將資料集劃分為k個子集,每次選中乙個子集作為測試集,剩餘的k-1個子集作為訓練模型的訓練集
from sklearn.mode_selection import cross_val_score # 匯入交叉驗證
cross_val_score(estimator=
, x_train, y_train, cv=10)
'''常用引數:
estimator: 模型物件名
x : 資料
y : 標籤
cv='warn' :交叉拆分策略,分成幾份
n_jobs=none : 占用cpu核心個數
'''
統計a類別例項被分成b類別的次數,使用混淆矩陣必須有一組**值和真實值
#導包
# **
from sklearn.model_selection import cross_val_predict
# 混淆矩陣
from sklearn.metrics import confusion_matrix
# 獲取**值
y_pred = cross_val_predict(estimator, x_train, y_train, cv=
3, method=
'predict'
)'''
引數:
estimator: 模型物件名
x_train: 資料
y_train : 標籤
cv:摺疊次數
method: 模型返回值,predict:**標籤值
'''# 使用混淆矩陣
confusion_matrix(y_train, y_pred)
'''引數:
y_true: 真實值
y_pred: **值
'''
上一步混淆矩陣中,會返回乙個矩陣
假設**為百人中查詢罪犯的結果:
tn: 不是犯人且**不是犯人
tp: 是犯人且**為犯人
前兩個**都為正確的
fn: 是好人卻**為犯人
fp: 是犯人卻**為好人
t pt
p+fn
\frac
tp+fnt
pt pt
p+fp
\frac
tp+fpt
pf 1=
2∗準確
率∗召回
率準確率
+召回率
=tpt
p+fn
+fp2
f_1=2*\frac=\frac}
f1=2∗
準確率+
召回率準
確率∗召
回率=
tp+2
fn+f
ptp
# 精準度
from sklearn.metrics import precision_score
precision_score(y_true, y_pred)
# 召回率
from sklearn.metrics import recall_score
recall_score(y_true, y_pred)
# f1分數
from sklearn.metrics import f1_score
f1_score(y_true, y_pred)
'''引數:
y_true: 真實值
y_pred: **值
'''
受試者工作特徵曲線(簡稱roc曲線),roc曲線和精準率/召回率(pr曲線)很相似,但並不是精準率和召回率,而是真正類率(召回率,tpr)和假正類率(fpr),假正類率是負類被分為正類的比率
from sklearn.model_selection import cross_val_predict
# roc曲線包
from sklearn.metrics import roc_curve
# 畫圖包
from matplotlib import pyplot as plt
%matplotlib inline
y_score = cross_val_predict(estimator, x_train, y_train, cv=
3, method=
'decision_function'
)'''
引數: method:'decision_function',返回決策分數
'''fpr, tpr, thresholds = roc_curve(y_train, y_score)
plt.plot(fpr, tpr, linewidth=2)
plt.plot([0
,1],
[0,1
],'k--'
)plt.axis([0
,1,0
,1])
plt.xlabel(
'假正類率'
)plt.ylabel(
'真正類率'
auc值代表roc曲線下面積,完美分類器的auc值為1,純隨機分類器的roc曲線auc值為0.5
**
from sklearn.metrics import roc_auc_score
roc_auc_score(y_train, y_score)
當正類非常少見或者更關注假正類而不是假負類時,選擇精準度/召回率(pr)曲線,反之選擇roc曲線
注: 通過roc曲線對比,可以在多個模型中選擇最適合當前資料的模型
機器學習基礎自學五(審核分類演算法)
from pandas import read csv from sklearn.model selection import kfold from sklearn.model selection import cross val score from sklearn.linear model im...
機器學習演算法
from 這裡,主要說一下,機器學習演算法的思想和應用!為了以後的應用總結一下!參考王斌譯的機器學習實戰一書。1 svd 奇異值分解 svd可以簡化資料,去除雜訊!對於簡化資料,使用svd,可以用小得多的資料集表示原有資料集。這樣實際上是去除了雜訊和冗餘資訊。比如有乙個32 32的影象,通過svd的...
機器學習演算法
1.c4.5演算法。c4.5 演算法與id3 演算法一樣,都是數學分類演算法,c4.5 演算法是id3 演算法的乙個改進。id3演算法採用資訊增益進行決策判斷,而 c4.5 採用的是增益率。2.cart演算法。cart 演算法的全稱是分類回歸樹演算法,他是乙個二元分類,採用的是類似於熵的基尼指數作為...