感知机预测NBA总冠军
import numpy as np
# 激活函數
def sign(x):
??? if x>=0:
??????? return 1
??? else:
??????? return 0
# 計算預測準確率函數
def score(x,y):
??? z=0
??? for i in range(len(x)):
??????? if x[i]==y[i]:
??????????? z += 1
??? print("準確率:",z/len(x))
# 訓練樣本 2000-2012年 NBA總決賽兩只球隊數據
#y_train[]中1表示勝,0表示負
#五項數據分別為[常規賽總勝場,常規賽交手戰績,隊員最佳陣容積分,常規賽場均得分,常規賽場均失分]減去對方的五項數據
x_train=np.array([[-1,0,-1,-4.6,-4.4],[-1,2,-3,-1.9,1.4],[7,0,4,2.5,1.4],[6,-2,1,5.9,4.9],
???????? [9,2,1,-8.1,-11],[8,-2,1,1.7,-2.8],[-8,0,-1,0.8,2.9],[5,0,2,2.9,-1.1],[-2,0,-4,-8.1,-10],
???????? [11,0,1,0.3,0.3],[6,0,3,5.1,2.1],[0,0,0,5.9,6.8],[9,0,5,-0.5,-4.4],[1,0,1,4.6,4.4],
???????? [1,-2,3,1.9,-1.4],[-7,0,-4,-2.5,-1.4],[-6,2,-1,-5.9,-4.9],[-9,-2,-1,8.1,11],[-8,2,-1,-1.7,2.8],
???????? [8,0,1,-0.8,-2.9],[-5,0,-2,-2.9,1.1],[2,0,4,8.1,10],[-11,0,-1,-0.3,-0.3],[-6,0,-3,-5.1,-2.1],
???????? [0,0,0,-5.9,-6.8],[-9,0,-5,0.5,4.4]])
y_train=[1]*13+[0]*13
?
# 測試樣本 2013-2017年 NBA總決賽兩只球隊數據
x_test=np.array([[16,0,2,5.6,-2.9],[-16,-2,-3,-10.6,-5.8],[14,0,0,6.9,1.2],[8,0,-1,3.2,0.2],[8,2,-1,-0.1,-1.6],[-16,0,-2,-5.6,2.9],
???????????????? [16,2,3,10.6,5.8],[-14,0,0,-6.9,-1.2],[-8,0,1,-3.2,-0.2],[-8,-2,1,0.1,1.6]])
y_test=[1,1,1,1,1,0,0,0,0,0]
w=[0,0,0,0,0]
# 設置學習率
a = 0.1
c = 0
# 進行1000輪實驗
while c < 1000:
??? for i in range(len(x_train)):
??????? # 如果某次分類錯誤,則修改權值和偏差
??????? if y_train[i] * (np.sum(w * x_train[i]) ) <= 0:
??????????? w += a * y_train[i] * x_train[i]
??? c += 1
# 最后在測試集上檢驗正確率
count = 0
print("w =",w)
l=[]
# 檢驗
for i in range(len(x_test)):
??? v=np.sum(w * x_test[i])
??? l.append(sign(v))
print("真實結果:",y_test,"\n測試結果:",l)
score(y_test,l)
運行結果:
轉載于:https://www.cnblogs.com/cavaliers20160620/p/7992356.html
總結
以上是生活随笔為你收集整理的感知机预测NBA总冠军的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Js~对数组进行分组户数
- 下一篇: Python - Windows系统下安