機器學習開篇

2021-07-09 11:46:21 字數 4282 閱讀 5263

一直想學習機器學習,但一方面無從下手,一方面時間,精力不夠,所以沒能夠開展,今天開始我將通過《機器學習實戰》一書,逐步學習機器學習,並和大家分享這個過程

語言為python

我這邊開發使用pycharm編譯器

python版本為python2.10

需要安裝numpy庫

實質為尤拉距離,由於今天學習太累,僅將**貼出,雖然和書上的**一樣,但其中加入了很多函式的用法,可以幫助大家學習,近期將講解這些**,

專案背景

**實戰

# -*- coding: utf-8 -*-

from numpy import *

import operator

import matplotlib

import matplotlib.pyplot as plt

defcreatedataset

(): group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])

labels=['a','a','b','b']

return group,labels

#分類器,核心函式

defclassify0

(inx,dataset,labels,k):

#shape會獲得矩陣的維數,是乙個元組,比如n*m的矩陣,返回的是(n,m)

datasetsize=dataset.shape[0]

#title第乙個引數是矩陣,第二個引數是乙個數字是表示對矩陣重複次數,不會增加矩陣維數,第二個引數是乙個二元組時

#二元組的第二個數,表示重複次數,不會增加矩陣維數,第乙個數表示重複多個矩陣,會增加維數

diffmat=tile(inx,(datasetsize,1))-dataset

#**表示n次冪

sqdiffmat=diffmat**2

#sum函式中axis=0表示按列求和 axis=1表示按行求和,並會降至一維

sqdistances=sqdiffmat.sum(axis=1)

distances=sqdistances**0.5

#argsort返回列表從小到大排序的索引

#eg:a=[5,10,3]

#a.argsort()

#[1,2,0]

sorteddistindicies=distances.argsort()

classcount={}

for i in range(k):

voteilabel=labels[sorteddistindicies[i]]

#字典的get(key,def)當key不存在時,返回def

classcount[voteilabel]=classcount.get(voteilabel,0)+1

#operator.itemgetter(n)獲得物件的第n個域

#sorter()第乙個引數為迭代物件,按key排序,reverse=true表示倒序排列即從大到小排列,返回的是乙個列表,裡面存放元組

sortedclasscount=sorted(classcount.iteritems(),key=operator.itemgetter(1),reverse=true)

return sortedclasscount[0][0]

#將檔案中的特徵和結果都讀取到矩陣中

deffile2matrix

(filename):

fr=open(filename)

arrayolines=fr.readlines()

numberoflines=len(arrayolines)

#zeros((n,m))函式的作用返回乙個n*m的全零矩陣

returnmat=zeros((numberoflines,3))

classlabelvector=

index=0

#dic=

for line in arrayolines:

line=line.strip()

listfromline=line.split('\t')

returnmat[index,:]=listfromline[0:3]

index+=1

return returnmat,classlabelvector

#歸一化處理

defautonorm

(dataset):

#找出當前列中的最小值

minvals=dataset.min(0)

maxvals=dataset.max(0)

ranges=maxvals-minvals

normdataset=zeros(shape(dataset))

m=dataset.shape[0]

normdataset=dataset-tile(minvals,(m,1))

normdataset=normdataset/tile(ranges,(m,1))

return normdataset,ranges,minvals

#計算分類器的錯誤率

defdatingclasstest

(): horatio=0.10

datingdatamat,datinglabels=file2matrix('h:\pythonfornumber\ch02\datingtestset2.txt')

normmat,ranges,minvals=autonorm(datingdatamat)

m=normmat.shape[0]

numtestvecs=int(m*horatio)

errorcount=0.0

for i in range(numtestvecs):

classifierresult=classify0(normmat[i,:],normmat[numtestvecs:m,:],datinglabels[numtestvecs:m],3)

print

"the classifier came back with: %d,the real answer is: %d"%(classifierresult,datinglabels[i])

if (classifierresult!=datinglabels[i]):errorcount+=1.0

print

"the total error rate is: %f" % (errorcount/float(numtestvecs))

#給定某人判定是哪類

defclassifyperson

(): resultlist=['not at all','in small doses','in large doses']

percenttats=float(raw_input("precentage of time spent playing video games"))

ffmiles=float(raw_input("frequent fliter miles earned per year?"))

icecream=float(raw_input("liters of ice cream consumed per year?"))

datingdatamat,datinglabels=file2matrix('h:\pythonfornumber\ch02\datingtestset2.txt')

normmat,ranges,minvals=autonorm(datingdatamat)

inarr=array([ffmiles,percenttats,icecream])

classifierresult=classify0((inarr-minvals)/ranges,normmat,datinglabels,3)

print

"you will probably like this person:",resultlist[classifierresult-1]

if __name__ == '__main__':

classifyperson()

# datingdatamat,classlabelvector=file2matrix('h:\pythonfornumber\ch02\datingtestset.txt')

# fig=plt.figure()

# ax=fig.add_subplot(111)

# ax.scatter(datingdatamat[:,0],datingdatamat[:,1],15.0*array(classlabelvector),15.0*array(classlabelvector))

# plt.show()

如果大家沒有這本書的話,資料資訊和原始碼請

《機器學習實戰》開篇

從今天開始,要開始練手 機器學習實戰 了。前面學了一點理論基礎,而且還做了兩個比賽,但是感覺很多東西還是無從下手,只是跑跑baseline的水平,沒有形成乙個完整的體系,所以要踏踏實實的打好基礎。光說不練假把式,光學理論是沒有用的,理論結合實踐,真正通過實戰才能學到知識,悟到真理。這本書不會原文本照...

機器學習之開篇

機器學習,本質來講,就是基於大數量的資料,尋找一種規律。然後根據找尋出的規律將未知目標值的資料確認目標值的過程。期間涉及到了資料,演算法。近幾年由於計算機硬體的公升級,大規模計算成為可能,所以機器學習又開始興起。資料是學習的 起初你拿到的是一堆陌生的資料,老闆可能給你一項任務,目標是在這一堆資料中確...

神經網路與機器學習之開篇

導 言 為了便於以後的學習,我還是穩紮穩打一步一步從基本概念和基本理論開始吧。不喜歡的求勿噴。一 從人腦神經網路到人工神經網路 人 腦 高度複雜的 非線性的和並行的計算機器 資訊處理系統 人工神經網路 由簡單處理單元構成的大規模並行分布式處理器,天然的具有儲存經驗知識和使之可用的特性 即一種自適應機...