機器學習之監督標題學習__線性分類
一,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.實現求解最優模型的演算法,也就是學習演...