分類屬於監督學習算法,是指根據已有的數據和標簽(分類)進行學習,預測未知數據的標簽。分類問題的目標是預測數據的類別標簽(class label),可以把分類問題划分為二分類和多分類問題。二分類是指在兩個類別中選擇一個類別,在二分類問題中,其中一個類別稱作正類(positive class),另一個類別稱作反類(negative class),比如判斷垃圾郵件。多分類問題是指從多個分類中選擇一個類別。
一,分類的一般方法
數據分類是一個兩階段的過程,包括學習階段(構建分類模型)和分類階段(使用模型預測新數據的類標號)。
舉個例子,下面的代碼實現了一個最簡單的knn分類器,可以看出,knn分類模型是由兩部分構成的:第一部分是擬合數據(fit),也就是訓練模型,第二部分是預測數據(predict)。
from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=3) x_train = [[0], [1], [2], [3]] y_train = [0, 0, 1, 1] knn.fit(x_train,y_train) x_new=[[1.1]] y_pred=knn.predict(x_new) print('predict:{0}'.format(y_pred))
二,分類的訓練數據
分類算法通過從訓練集中學習來構造分類器,訓練集由數據元組和其關聯的類標號構成,一個數組元組表示為:[f1,f2,f3] ,其類標號表示為:category。元組中的每個字段叫做數據的特征,或屬性;類標號是指該數據元組的類別。
在談到分類時,數據元組也稱為樣本、數據點或對象。數據在應用到估計器之前,需要對數據進行預處理。數據預處理,請閱讀sklearn的官方文檔:《5.3. Preprocessing data》
三,分類的估計器
sklearn中的分類估計器(Estimator)指的是分類的算法模型,用於對數據進行分類,sklearn的分類算法有:knn、貝葉斯、決策樹等。
估計器主要由擬合(fit)和預測(predict)構成:
- fit(x,y):擬合,傳入數據以及標簽用於訓練模型,訓練的時間跟算法的參數設置、數據集的大小以及數據本身的特點有關
- predict(x):預測,用於對新數據進行預測,該方法接受一個數據點,輸出該數據點的預測標簽。通常使用該方法返回測試的結果,再將這個結果用於評估模型。
四,分類模型的評估
分類模型的評估由模型的正確率和預測的不確定度構成:
- score(x,y):模型的正確率,用於對模型的正確率進行評分(范圍0-1),計算公式是:count(預測正確的數據點)/總的數據點數量
- predict_prob(x):每個類別的概率,表示預測的置信度。
在評估模型時,不能僅僅限於模型的正確率(score),由於在不同的問題下,評判模型優劣的的標准不限於簡單的正確率,可能還包括召回率或者是查准率等其他的指標,特別是對於類別失衡的樣本,准確率並不能很好的評估模型的優劣,因此在對模型進行評估時,不要輕易的被score的得分蒙蔽。
關於分類模型評估的詳細信息,請閱讀sklearn的官方文檔:《3.3. Model evaluation: quantifying the quality of predictions》
參考文檔: