1. 程式人生 > >《機器學習(周志華)》習題3.3答案

《機器學習(周志華)》習題3.3答案

程式設計實現對率迴歸,並給出西瓜資料集[email protected]上的結果。

對率迴歸即邏輯迴歸,可以看做沒有隱藏層的,用sigmoid做啟用函式,crossentropy做cost(不加regularization)的神經網路。

本題用theano實現,調參時,learning rate 設為1,更大則cost會出現震盪,迭代次數設為10000可收斂,但是,訓練效果並不好,最高準確率也只有70%。簡單分析,根據前面knn和決策樹畫的分類面,可以看出這個問題不是線性可分的,因此邏輯迴歸在這裡不太適用。

第一次用theano,還是簡單記錄下

theano中有符號變數的概念,無實值,類似C語言,必須先宣告其型別;表示式的概念,並沒有做計算;函式的概念,定義好輸入輸出,輸出一般是表示式,輸入是與輸出相關的變數(不要多也不要少),傳入引數後,theano將會編譯表示式(包含各種優化,時間較長),然後帶入計算。

此外,函式中還可以有updates引數,形式為一對對的tuple,每對tuple由欲更新的變數,及更新的值組成。因為符號變數是無實值的,無法更新,這裡沒法用,於是有shared的概念,shared符號變數是有實值的。updates意義是,每次函式呼叫完後,updates引數中的tuple都發生一次更新。雖然其他方法也可以實現updates,但推薦使用updates,因為它涉及到一些theano的底層優化,例如減少gpu和cpu的通訊,降低記憶體拷貝的時間。

theano還有自動求導功能,theano.grad(),以及一些在神經網路中常用的函式,softmax,交叉熵等。

具體例項可參考程式碼:

# coding: utf-8
import numpy as np
import theano.tensor as T 
import theano
import numpy.random as rng
from theano.tensor.nnet import sigmoid, binary_crossentropy

file = open('西瓜資料集3.csv'.decode('utf-8'))
data = [raw.strip('\n').split(',') for raw in file]
X = [[float(raw[-3]), float(raw[-2])] for raw in data[1:]]
Y = [1 if raw[-1]=='是' else 0 for raw in data[1:]]

feats = len(X[0])
lrate = 1
maxturn = 10000
x = T.dmatrix('x')
y = T.vector('y')
w = theano.shared(rng.normal(size=feats), name='w')
b = theano.shared(rng.randn(), name='b')

z = T.dot(x, w) + b
p = sigmoid(z)
cost = binary_crossentropy(p, y).mean()
gw, gb = theano.grad(cost, [w, b])
pred_res = p > 0.5
fit = theano.function(inputs=[x, y], outputs=[cost, gw, gb], updates=((w, w-lrate*gw), (b, b-lrate*gb)))
predict = theano.function(inputs=[x], outputs=[pred_res])

for i in range(maxturn):
	print fit(X, Y)
train_res = predict(X)[0]
print 'predict result:'
print train_res
print 'accuracy:'
print float(sum([Y[i]==train_res[i] for i in range(len(Y))])) / len(Y)


相關推薦

機器學習習題3.3

           本人菜鳥一枚,由於需要完成作業,所以嘗試使用機器學習工具庫去解決該題(周志華《機器學習》3.3題),主要參考別人的程式碼進行了改寫,如有不足請多多指教!            以下附上本題程式碼 import tensorflow as tf fro

機器學習第四章習題解答

轉自:http://blog.csdn.NET/wzmsltw/article/details/51059394 本文是對周志華的《機器學習》的習題解答,文章整理的很好,為方便之後檢視,記錄如下~ ~~~ 注:本文中的程式碼均使用Python,常用工具包包括 pandas,

機器學習》Chapter1 緒論 課後習題答案

表1.1 包含4個樣例,3種屬性,假設空間中有3 * 4 * 4 + 1 = 49種假設。在不考慮冗餘的情況下,最多包含k個合取式來表達假設空間,顯然k的最大值是49,每次從中選出k個來組成析合式,共​種可能。但是其中包含了很多沉餘的情況(至少存在一個合取式被剩餘的析合式完全

機器學習習題10.1 答案

程式設計實現K鄰近分類器,在西瓜資料集[email protected](屬性只有密度與含糖率)上,比較其分類邊界與決策樹分類邊界之異同。 KNN用歐式距離計算,投票時根據距離加權,在訓練集

機器學習習題5.5答案

程式設計實現標準BP演算法(sgd)和累積BP演算法(fullbatch),在西瓜3.0上訓練一個單隱層網路,並進行比較。 需要先把字串轉成數字,這裡用one-hot。把二分類問題看成多分類問題的特例,然後用softmax。最終模型在訓練集上可達到100%準確率,並且在西瓜

機器學習習題3.3答案

程式設計實現對率迴歸,並給出西瓜資料集[email protected]上的結果。 對率迴歸即邏輯迴歸,可以看做沒有隱藏層的,用sigmoid做啟用函式,crossentropy做cost(

機器學習課後習題一:緒論

1 表1.1中若只包含編號為1和4的兩個樣例,試給出相應的版本空間 編號 色澤 根蒂 敲聲 好瓜 1 青綠 蜷縮 濁響 是 4 烏黑 稍蜷 沉悶 否 根據表格可看出,每個屬性有

機器學習》——第6章 支援向量機

1、間隔與支援向量 (1)分類學習的最基本思想就是:基於訓練集D在樣本空間中找到一個劃分超平面,將不同類別的樣本分開。 (2)在樣本空間中,用線性方程來表示劃分超平面:ωTx + b = 0 ;其中ω = (ω1;ω2; … ; ωd)為法向量,決定超平面內的方向;b

機器學習 第八章課後答案歡迎探討

作為一個初學者,嘗試著去寫作業,並對答案做個整理附錄。 這裡是第八章。 整合學習8.1 假設拋硬幣正面朝上的概率為p , 反面朝上的概率為 1-p.  令H(n)代表拋n次硬幣所得正面朝上的次數,則最多k次正面朝上的概率為   (典型的二項分佈 對小於等於k 的 做累加和) 

機器學習》 西瓜資料集3.0

書上的一個常用資料集 編號,色澤,根蒂,敲聲,紋理,臍部,觸感,密度,含糖率,好瓜 1,青綠,蜷縮,濁響,清晰,凹陷,硬滑,0.697,0.46,是 2,烏黑,蜷縮,沉悶,清晰,凹陷,硬滑,0.774

機器學習參考答案 第一章 緒論

表1.1中若只包含編號為1和4的兩個樣例,試給出相應的版本空間。表1.1 西瓜資料集編號色澤根蒂敲聲好瓜1青綠蜷縮濁響是2烏黑蜷縮濁響是3青綠硬挺清脆否4烏黑稍蜷沉悶否假設空間指的是問題所有的假設組成的空間,我們可以把學習過程看做是在假設空間中搜索的過程,搜尋目標是尋找與訓練

機器學習 習題3.1-3.3個人筆記

3.1  試分析在什麼情況下式(3.2)中不必考慮偏置項b. 其實從前面第一章開始的習題就有很多不會的,第二章更是隻會做前兩道,現在到第三章,發現第一題都不是很明瞭了。從我個人來看:f(x)=w'x+b中,x代表d維向量,w則是相應的權重向量,而b=b*x0可看做權重為b,

機器學習西瓜書學習筆記1:第三章-線性模型

一、線性迴歸     線性迴歸的基本思想是採用對輸入樣例各個特徵進行線性加權的方式得到預測的輸出,並將預測的輸出和真實值的均方誤差最小化。1)如果輸入樣例只有一個特徵,那這個過程就是用一條直線去擬合平面直角座標系上的點; 2)如果有兩個特徵,表現在平面直角座標系上就是用一條

機器學習學習筆記歸納偏好

定義:機器學習演算法在學習過程中對某種型別假設的偏好。 每種演算法必有其歸納偏好,否則它將被假設空間中看似在訓練集上“等效”的假設所迷惑,無法產生確定的學習結果。 例子理解: 編號 色澤 根蒂 敲聲 好瓜 1 青綠 蜷縮 濁響 是

機器學習 課後習題3.3:程式設計實現對率迴歸,並給出西瓜資料集 3.0α 上的結果.

資料如下: python 程式碼如下: #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Tue Jan 30 10:05:01 2018 @author: llw """ #logistic r

機器學習》()課後習題參考答案

 目錄: 參考:http://blog.csdn.net/snoopy_yuan/article/details/62045353 - 目錄 第一章 緒論 第二章 模型評估與選擇 第三章 線性模型 第四章 決策樹 [2016.12.20]決策樹代碼太亂,

機器學習】第一張緒論 答案python

機器學習已經看了挺長時間,一直在打醬油式的看。這次準備認真看並且做一下習題,程式碼實現。 第一張緒論有5道題。 1.根據表的編號1和4 兩個樣例,求相應的版本版本空間 幾個簡單的解釋: 假設空間: 所有假設組成的空間 學習過程: 在所有假設空間中搜索想要的假設 目標: 搜尋到

機器學習 第一章緒論含答案

知識點 分類:離散值 迴歸:連續值 監督學習:分類、迴歸 無監督學習:聚類 泛化能力(generalization):學得模型適用於新樣本的能力。 版本空間:與訓練集一致的“假設集合”。 歸納→歸納偏好(inductive bias),結合具體問題

機器學習學習筆記第四章 決策樹課後習題python 實現

一、基本內容 1.基本流程 決策樹的生成過程是一個遞迴過程,有三種情形會導致遞迴返回 (1)當前節點包含的yangben全屬於同一類別,無需劃分; (2)當前屬性集為空,或是所有yangben在所有屬性上的取值相同,無法劃分; (3)當前結點包含的yangben集合為空,不能

機器學習學習筆記第三章 線性模型課後習題python 實現

線性模型 一、內容 1.基本形式 2.線性迴歸:均方誤差是迴歸任務中最常用的效能度量 3.對數機率迴歸:對數機率函式(logistic function)對率函式是任意階可導的凸函式,這是非常重要的性質。 4.線性判別分析(LDA 是一種降維的方法) 5.多分類學習: