機器學習之監督標題學習 線性分類

2021-09-07 08:13:23 字數 2709 閱讀 9313

機器學習之監督標題學習__線性分類

一,logistic回歸 (邏輯回歸):

通過不斷修正縮小誤差最終得到準確的模型,整個過程中需要不斷回歸,直到達到指定的次數或者達到設定的精度

二,sigsigmoid函式:

啟用函式sigmoid函式是一種階躍函式,輸出範圍在[0,1],在回歸問題中,我們需要找到最佳的回歸係數,需要用到最優化演算法。

sigmoid函式: f(x)=1/(1+exp^(-x)) (exp,高等數學裡以自然常數e為底的指數函式)

三,精度:alpha(模型允許的誤差值,一般來說誤差越小運算量越大),同時如果過分追求高精度,容易造成模型過度複雜,從而造成過擬合的情況(即在訓練集中的**非常精確,但是在測試集中的準確率非常低)

四,步長(也稱學習率)

即每次修正的大小,如果步長變大,則每次向正確引數移動的距離變大,學習效率變高,但是容易造成引數越過正確值

五,梯度

梯度上公升和梯度下降:梯度是三維以上的空間用的,類似於二維中的傾斜度,二維中的傾斜度為正的時候線向右傾斜,否則向左傾斜,同理在三維中梯度下降類似於碗裝,想要求得碗底那一點就要減,梯度上公升類似於蘑菇狀,想要求得最大值,就要增加

六,**實現`

'''python

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

"""created on fri jan 4 20:41:37 2019

@author: ym

"""from numpy import *

#定義sigmoid的實現

def sigmoid(data):

return 1.0/(1+exp(-data))

#print(sigmoid(40))

#當學習指定次數後退出迴圈

def gradient_ascent_test1():

def func(old):

return -2*old+4

old=-1

news=0

alpha=0.001

num=5000

for i in range(num):

olds=news

news=olds+alpha*func(olds)

return news

print(gradient_ascent_test1())

#當模型到達指定精度後停止學習

def gradient_ascent_test2():

def func(old):

return -2*old+4

olds=-1

news=0

alpha=0.001 #步長

pricision=0.00001 #精度

while (news-olds)>pricision:

olds=news

news=olds+alpha*func(olds)

return news

print(gradient_ascent_test2())

#資料集前80條作為訓練集 後20條作為測試集

#載入資料

def loaddataset():

i=0datamat=

labelmat=

with open('testset.txt','r') as fp:

for line in fp.readlines():

if i>80:

break

array=line.strip().split()

i=i+1

return datamat,labelmat

datamat,labelmat=loaddataset()

#print(datamat)

#print(labelmat)

#學習部分 獲得模型

def gradientascent(datamat,labelmat):

#將python中的list轉為 matrix

datamat=mat(datamat)

labelmat=mat(labelmat).t # transpose()轉置 ——》行轉置為行 行轉置為列

m,n=shape(datamat) #資料集有n行 3列

#numpy 建立乙個值為1 n行1列的值

weights=ones((n,1))

alpha=0.0001 #步長 學習率

num=5000 #迭代的次數

for k in range(num):

tempresult=sigmoid(datamat*weights)

error=labelmat-tempresult

weights=weights+alpha*datamat.t*error

return weights

weights=gradientascent(datamat,labelmat)

print(weights)

#測試模型

data=[1.0, 0.317029 ,14.739025]

data=mat(data)

y=data*weights

cla=sigmoid(y)

print(y,' ',cla)

'''

機器學習之線性分類SVM

coding utf 8 created on fri nov 30 21 05 40 2018 author muli import matplotlib.pyplot as plt import numpy as np from sklearn import datasets,cross val...

監督學習 線性分類器

python 1 分割資料 部分資料用於做模型訓練 一般需要的資料量比較大,可以通過網上公開的資料來源,或者向企業獲取,或者自己爬蟲?一部分資料用於測試模型的準確度 用到sklearn.cross valiation裡的train test split函式 x train,x test,y trai...

機器學習之監督學習

一 監督學習的三要素 模型 總結資料的內在規律,用數學函式描述的系統 策略 選取最優模型的評價準則 演算法 選取最優模型的具體方法 二 監督學習的實現步驟 1.得到乙個有限的訓練資料集 2.確定包含所有學習模型的集合 3.確定模型選擇的準則,也就是學習策略 4.實現求解最優模型的演算法,也就是學習演...