KNN模型專案實戰

2021-09-17 02:51:54 字數 2628 閱讀 6940

1.定義問題

這個專案通過分析批發銷售資料集(wholesale customers data)來判斷銷售商品**於哪個渠道。

fresh:新鮮商品年度支出

milk::牛奶商品年度支出

grocery:雜貨商品年度支出

frozen:冷凍品年度支出

detergents_*****: 清潔劑和紙製品的年度支出(百萬美元)(連續)

delicatessen: 熟食產品年度支出(百萬美元)

channel: 銷售渠道,horeca(酒店/餐廳/咖啡廳)或retail(零售渠道8) ;horeca取1,retail取2

8)region:銷售地區,lison, oporto or other;lison取1,oporto取2,other取3

#將資料集拆分為訓練集和測試集

predictors = wholesale.columns[1:]

x_train,x_test,y_train,y_test = model_selection.train_test_split(

wholesale[predictors],wholesale.channel,test_size = 0.25,random_state = 1234)

arg_max = np.array(accuracy).argmax()

plt.rcparams[『font.sans-serif』] = [『microsoft yahei』]

plt.rcparams[『axes.unicode_minus』] = false

plt.plot(k, accuracy)

plt.scatter(k, accuracy)

plt.text(k[arg_max],accuracy[arg_max], 『最佳k值為%s』 %int(k[arg_max]))

從圖中可以看出最佳k值為4。

3.理解資料

#重新構建模型,並將最佳的近鄰個數設定為4

import numpy as np

from sklearn import neighbors

knn_class = neighbors.kneighborsclassifier(n_neighbors = 4,weights = 『distance』)

knn_class.fit(x_train, y_train)

predict = knn_class.predict(x_test)

#構建混淆矩陣

從混淆矩陣圖中主對角線上來看,絕大多數的樣本都被正確分類,混淆矩陣圖中,每一行代表真實的樣本類別,每一列代表**的樣本類別,以第一列為例,實際來自渠道1的樣本有72個,**來自渠道1的樣本有62個,說明渠道1類別的覆蓋率為62/72=0.8611

#模型整體的**準確率

print(metrics.scorer.accuracy_score(y_test,predict))

#分類模型的評估報告

如上圖所示,前兩行代表因變數y中的各個類別值, 最後三行表示微平均、巨集平均和加權平均。第一列precision表示模型的**精度,計算公式為「**正確的類別個數/該類別**的所有個數」;第二列recall表示模型的**覆蓋率,計算公式為「**正確的類別個數/該類別實際的所有個數」;第三列fl_score是對precision和recall的加權結果;第四列為類別實際的樣本個數。

Knn演算法實戰

三 完整 或者尋找最近的k個資料,推測新資料的分類。import csv with open e 資資 python練習 knn prostate cancer.csv r as file dictreader把資料讀成字典 reader csv.dictreader file datas row ...

KNN演算法實戰

time 2021 1 4 20 37 file knn.py from sklearn.datasets import load iris from sklearn.model selection import train test split from sklearn.preprocessing...

RBAC許可權模型 專案實戰

一 前言 許可權一句話來理解就是對資源的控制,對web應用來說就是對url的控制,關於許可權可以毫不客氣的說幾乎每個系統都會包含,只不過不同系統關於許可權的應用複雜程式不一樣而已,現在我們在用的許可權模型基本上都是以rbac為基礎進行擴充套件的,我們今天就將rbac許可權模型進行下介紹。二 rbac...