sklearn 翻譯筆記:KNeighborsClassifier


今天做機器學習knn的實現想使用sklearn這個模塊,但是里面的函數不懂,無奈只能查文檔,但是一大片英文看見我就煩,也不是說不能看  但是以我低下的英語水平實在是太費勁了。幸好找到一篇前人翻譯的比較好的解釋。給大家推薦一下:一位來自簡書的作者:吃着蘋果寫代碼   感謝作者的分享,希望能幫到更多的人。

sklearn 翻譯筆記:KNeighborsClassifier - 簡書

 

順便把今天實現的代碼也分享出來吧:誠然,代碼實現順利運行的呢一刻真的很開心

本代碼是在python 中文文本分類 - 相國大人 - CSDN博客(相國大人)的代碼基礎上實現的

相國大人是使用的貝葉斯分類實現的分類模型,由於我的實際需要,我將相國大人的最后一個分類器模型NBayes_Predict.py修改了,使用了sklearn.neighbors這個pycharm自帶的模塊,具體源碼如下:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@version: python3.6
@author: XiangguoSun
@file:Neighbors.py
@time: 2019/6/20 16:12
@software: PyCharm
"""


from sklearn.neighbors import KNeighborsClassifier # 導入k近鄰算法
from sklearn import metrics
from Tools import readbunchobj
import os

# 導入訓練集
path = os.getcwd()  # 獲取當前路徑
trainpath = os.path.join(path,"train_word_bag/tfdifspace.dat")
train_set = readbunchobj(trainpath)

# 導入測試集
testpath = os.path.join(path,"test_word_bag/testspace.dat")
test_set = readbunchobj(testpath)

# 訓練分類器:輸入詞袋向量和分類標簽,
clf=KNeighborsClassifier(n_neighbors=5,radius=1.0,algorithm='auto',leaf_size=30,
metric='minkowski',p=2,metric_params=None,n_jobs=1).fit(train_set.tdm, train_set.label)
"""
n_neighbors: int, 可選參數(默認為 5)
algorithm(算法): {‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, 可選參數(默認為 'auto')
leaf_size(葉子數量): int, 可選參數(默認為 30)
p: integer, 可選參數(默認為 2)
metric(矩陣): string or callable, 默認為 ‘minkowski’
metric_params(矩陣參數): dict, 可選參數(默認為 None)
n_jobs: int, 可選參數(默認為 1)
用於搜索鄰居的,可並行運行的任務數量。如果為-1, 任務數量設置為CPU核的數量。
"""

# 預測分類結果
predicted = clf.predict(test_set.tdm)

"""
target_name: 是一個list,存放的是整個數據集的類別集合
label: 是一個list,存放的是所有文本的標簽。
filenames: 是一個list,存放的是所有文本文件的名字。
contents: 是一個list,分詞后文本文件(一個文本文件只有一行)
"""
for flabel, file_name, expct_cate in zip(test_set.label, test_set.filenames, predicted):
    if flabel != expct_cate:
        print(file_name, ": 實際類別:", flabel, " -->預測類別:", expct_cate)

print("預測完畢!!!")

# 計算分類精度:

def metrics_result(actual, predict):
    print('精度:{0:.3f}'.format(metrics.precision_score(actual, predict, average='weighted')))
    print('召回:{0:0.3f}'.format(metrics.recall_score(actual, predict, average='weighted')))
    print('f1-score:{0:.3f}'.format(metrics.f1_score(actual, predict, average='weighted')))


metrics_result(test_set.label, predicted)

 readbunchobj()方法在Tool.py文件,若要復現,請下載相國大人完整代碼再修改或者聯系我,我可以提供修改好的Knn代碼和訓練集測試集。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM