統計學習方法例2.1實現(轉)
阿新 • • 發佈:2018-12-13
對應李航《統計學習方法》 P29的 例2.1
# -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') # @Author: appleyuchi # @Date: 2018-10-02 21:54:30 # @Last Modified by: appleyuchi # @Last Modified time: 2018-10-02 21:55:51 #-*- coding:utf-8 -*- import os import sys from numpy import * reload(sys) sys.setdefaultencoding('utf-8') #首先將書上的訓練集輸入 def loadDataset(): dataset=[[3,3],[4,3],[1,1]] labels=[1,1,-1] return dataset,labels #定義sign函式 def function_sign(x): if x>=0:return 1 else:return -1 #演算法主程式 def perceptron(dataSet,labels): dataMat=mat(dataSet) #將資料集轉換成矩陣用於計算 m,n=shape(dataMat) w=mat(zeros((n,1)));b=0 #建立與示例維度相同的初始化w while([function_sign(i) for i in array(dataMat * w+b)]) != labels: #當預測結果與實際結果不符時則迴圈更新我,w,b for i in xrange(m): if labels[i]*(dataMat[i]*w+b)<=0: w += labels[i]*dataMat[i].T b += labels[i] return w,b if __name__ == '__main__': dataSet,labels=loadDataset() w,b=perceptron(dataSet,labels) print w,'\n',b