機器學習-周志華-課後習題答案-線性模型
3.1試分析在什麼情況下,在以下式子中不比考慮偏置項b。
答:線上性迴歸中,所有引數的確定都是為了讓殘差項的均值為0且殘差項的平方和最小。在所有其他引數項確定後,偏置項b(或者說是常數項)的變化體現出來的就是擬合曲線的上下整體浮動,可以看做是其他各個解釋變數留下的bias的線性修正。因此線上性擬合過程中是需要考慮偏置項的。
但若需要做的是比較不同自變數對因變數的影響,那麼不需要考慮常數項,這樣得到的迴歸係數是標準化的迴歸係數。
3.2試證明,對於引數w,對率迴歸(logistics迴歸)的目標函式(式1)是非凸的,但其對數似然函式(式2)是凸的。
3.3程式設計實現對率迴歸,並給出西瓜資料集3.0α上的結果
西瓜資料集3.0α:
編號 | 密度 | 含糖率 | 好瓜 |
1 | 0.697 | 0.46 | 是 |
2 | 0.774 | 0.376 | 是 |
3 | 0.634 | 0.264 | 是 |
4 | 0.608 | 0.318 | 是 |
5 | 0.556 | 0.215 | 是 |
6 | 0.403 | 0.237 | 是 |
7 | 0.481 | 0.149 | 是 |
8 | 0.437 | 0.211 | 是 |
9 | 0.666 | 0.091 | 否 |
10 | 0.243 | 0.0267 | 否 |
11 | 0.245 | 0.057 | 否 |
12 | 0.343 | 0.099 | 否 |
13 | 0.639 | 0.161 | 否 |
14 | 0.657 | 0.198 | 否 |
15 | 0.36 | 0.37 | 否 |
16 | 0.593 | 0.042 | 否 |
17 | 0.719 | 0.103 | 否 |
答:
首先將資料存入excel表,存為csv格式。再將是/否 轉為1/0
參考《機器學習實戰》的內容。本題分別寫了梯度上升方法以及隨機梯度上升方法。對書本上的程式做了一點點改動
- # -*- coding: cp936 -*-
- from numpy
- import pandas as pd
- import matplotlib.pyplot as plt
- #讀入csv檔案資料
- df=pd.read_csv('watermelon_3a.csv')
- m,n=shape(df.values)
- df['norm']=ones((m,1))
- dataMat=array(df[['norm','density','ratio_sugar']].values[:,:])
- labelMat=mat(df['label'].values[:]).transpose()
- #sigmoid函式
- def sigmoid(inX):
- return1.0/(1+exp(-inX))
- #梯度上升演算法
- def gradAscent(dataMat,labelMat):
- m,n=shape(dataMat)
- alpha=0.1
- maxCycles=500
- weights=array(ones((n,1)))
- for k in range(maxCycles):
- a=dot(dataMat,weights)
- h=sigmoid(a)
- error=(labelMat-h)
- weights=weights+alpha*dot(dataMat.transpose(),error)
- return weights
- #隨機梯度上升
- def randomgradAscent(dataMat,label,numIter=50):
- m,n=shape(dataMat)
- weights=ones(n)
- for j in range(numIter):
- dataIndex=range(m)
- for i in range(m):
- alpha=40/(1.0+j+i)+0.2
- randIndex_Index=int(random.uniform(0,len(dataIndex)))
- randIndex=dataIndex[randIndex_Index]
- h=sigmoid(sum(dot(dataMat[randIndex],weights)))
- error=(label[randIndex]-h)
- weights=weights+alpha*error[0,0]*(dataMat[randIndex].transpose())
- del(dataIndex[randIndex_Index])
- return weights
- #畫圖
- def plotBestFit(weights):
- m=shape(dataMat)[0]
- xcord1=[]
- ycord1=[]
- xcord2=[]
- ycord2=[]
- for i in range(m):
- if labelMat[i]==1:
- xcord1.append(dataMat[i,1])
- ycord1.append(dataMat[i,2])
- else:
- xcord2.append(dataMat[i,1])
- ycord2.append(dataMat[i,2])
- plt.figure(1)
- ax=plt.subplot(111)
- ax.scatter(xcord1,ycord1,s=30,c='red',marker='s')
- ax.scatter(xcord2,ycord2,s=30,c='green')
- x=arange(0.2,0.8,0.1)
- y=array((-weights[0]-weights[1]*x)/weights[2])
- print shape(x)
- print shape(y)
- plt.sca(ax)
- plt.plot(x,y) #ramdomgradAscent
- #plt.plot(x,y[0]) #gradAscent
- plt.xlabel('density')
- plt.ylabel('ratio_sugar')
- #plt.title('gradAscent logistic regression')
- plt.title('ramdom gradAscent logistic regression')
- plt.show()
- #weights=gradAscent(dataMat,labelMat)
- weights=randomgradAscent(dataMat,labelMat)
- plotBestFit(weights)
隨機梯度上升法得到的結果如下:
可以看出,兩種方法的效果基本差不多。但是隨機梯度上升方法所需要的迭代次數要少很多。
3.4選擇兩個UCI資料集,比較10折交叉驗證法和留一法所估計出的對率迴歸的錯誤率。
(UCI資料集: archive.ics.uci.edu/ml/)
答:嫌麻煩所以沒弄。有興趣可以把資料下下來跑跑看
另外可以直接用sklearn做cv。更加方便
3.5 程式設計實現線性判別分析,並給出西瓜資料集3.0α上的結果
答:
LDA的程式設計主要參考書上P62的3.39 以及P61的3.33這兩個式子。由於用公式可以直接算出,因此比較簡單
程式碼如下:
- # -*- coding: cp936 -*-
- from numpy import *
- import numpy as np
- import pandas as pd
- import matplotlib.pyplot as plt
- df=pd.read_csv('watermelon_3a.csv')
- def calulate_w():
- df1=df[df.label==1]
- df2=df[df.label==0]
- X1=df1.values[:,1:3]
- X0=df2.values[:,1:3]
- mean1=array([mean(X1[:,0]),mean(X1[:,1])])
- mean0=array([mean(X0[:,0]),mean(X0[:,1])])
- m1=shape(X1)[0]
- sw=zeros(shape=(2,2))
- for i in range(m1):
- xsmean=mat(X1[i,:]-mean1)
- sw+=xsmean.transpose()*xsmean
- m0=shape(X0)[0]
- for i in range(m0):
- xsmean=mat(X0[i,:]-mean0)
- sw+=xsmean.transpose()*xsmean
- w=(mean0-mean1)*(mat(sw).I)
- return w
- def plot(w):
-
相關推薦
機器學習-周志華-課後習題答案-線性模型
3.1試分析在什麼情況下,在以下式子中不比考慮偏置項b。答:線上性迴歸中,所有引數的確定都是為了讓殘差項的均值為0且殘差項的平方和最小。在所有其他引數項確定後,偏置項b(或者說是常數項)的變化體現出來的就是擬合曲線的上下整體浮動,可以看做是其他各個解釋變數留下的bias的線性
機器學習-周志華-課後習題答案5.5
5.5 試程式設計實現標準BP演算法和累計BP演算法,在西瓜資料集3.0上分別用這兩個演算法訓練一個單隱層網路,並進行比較。 通過程式設計實踐發現,在本例下要達到某一限定的均方誤差時,標準BP演算法比累積BP演算法明顯收斂更快,特別在本例中,將ABP演算法誤差設定到0.0
機器學習--周志華--課後習題3.3答案
LR實現,訓練集和測試集都是書上給的西瓜資料集3.0α,用keras實現程式碼如下: # coding: utf-8 """ 使用keras實現logistic分類器 """ import os import gzip import urllib im
機器學習-周志華,習題1.1,答案探究
1.1版本空間 1.2 感覺上,可能的假設應當就是不同的版本空間,則對應瞭如圖1.2的3種版本空間 1.3 看不懂題目意思。設定閾值,或者排除異類後,按優先順序具有偏好。 1.4 不能理解,等回過頭來再看這題吧。
機器學習.周志華《14 概率圖模型 》
目錄思維導圖轉載自:https://blog.csdn.net/liuyan20062010/article/details/72842007匯入:機器學習的核心價值觀:根據一些已觀察到的證據來推斷未知。其中基於概率的模型將學習任務歸結為計算變數的概率分佈;生成式模型:先對聯
《機器學習》(周志華)課後習題參考答案
目錄: 參考:http://blog.csdn.net/snoopy_yuan/article/details/62045353 - 目錄 第一章 緒論 第二章 模型評估與選擇 第三章 線性模型 第四章 決策樹 [2016.12.20]決策樹代碼太亂,
《機器學習》周志華 課後習題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
機器學習(周志華) 參考答案 第十六章 強化學習
機器學習(周志華西瓜書) 參考答案 總目錄 是時候讓自己的機器更強大一些了,順便完結撒花 1.用於K-搖臂賭博機的UCB方法每次選擇Q(k)+UC(k)的最大的搖臂,其中Q(k)為搖臂k當前的平均獎賞,UC(k)為置信區間。例如Q(k)
機器學習(周志華西瓜書) 參考答案 總目錄
機器學習(周志華西瓜書)參考答案總目錄 從剛開始學習機器學習到現在也有幾個月了,期間看過PDF,上過MOOC,總感覺知道一點了又不是特別明白,最後趁某東買書大減價弄了幾本相關的書來看看,其中一本就是西瓜書。一口氣看了前10章,感覺每章內容都很少,看完感覺還是和以前一樣。
機器學習(周志華) 參考答案 第三章 線性模型 3.3
一:matlab實現 1.資料的Excel處理 西瓜資料集3.0 2.程式碼 # -*- coding: utf-8 -*- old_l = 0; n = 0; b = [0;0;1]; %對應書中(3.25)下的B=(w;b),因為x有兩個屬性:
機器學習(周志華) 參考答案 第一章 緒論
機器學習(周志華) 參考答案 第一章 緒論 機器學習(周志華西瓜書) 參考答案 總目錄 1.表1.1中若只包含編號為1,4的兩個樣例,試給出相應的版本空間。 假設空間指的是問題所有假設組成的空間,我們可以把學習過程看作是在假設空間中搜索的過程,
機器學習(周志華) 參考答案 第十四章 概率圖模型
機器學習(周志華西瓜書) 參考答案 總目錄 1.試用盤式記法表示條件隨機場和樸素貝葉斯分類器。 條件隨機場: 這樣畫的問題在於無法表示N個y之間的關係,到底怎麼畫我也不知道。 樸素貝葉斯分類器:y依賴於所有的變數x 2.證明
機器學習(周志華) 參考答案 第四章 決策樹 python重寫版與畫樹演算法
機器學習(周志華西瓜書) 參考答案 總目錄 機器學習(周志華) 參考答案 第四章 決策樹 3.試程式設計實現基於資訊熵進行劃分選擇的決策樹演算法,併為表4.3中資料生成一棵決策樹。 最近在學著用python,所以用py重寫了以前的決策樹程式碼,
機器學習(周志華) 參考答案 第二章 模型評估與選擇
機器學習(周志華) 參考答案 第二章 模型評估與選擇 機器學習(周志華西瓜書) 參考答案 總目錄 1.資料集包含1000個樣本,其中500個正例,500個反例,將其劃分為包含70%樣本的訓練集和30%樣本的測試集用於留出法評估,試估算共有多少種
機器學習 周志華 第一章習題
1.表1.1中若只包含編號為1,4的兩個樣例,試給出相應的版本空間。 假設資料集有n種屬性,第i個屬性可能的取值有ti種,加上該屬性的泛化取值(*),所以可能的假設有 ∏_i(t_i+1) 再用空集表示沒有正例,假設空間中一共 ∏i(ti+1)
機器學習(周志華) 參考答案 第十五章 規則學習
機器學習(周志華西瓜書) 參考答案 總目錄 好忙啊好忙啊好忙啊,這章和我的研究方向關係不大,暫時先偷工減料一下下。 1.對西瓜資料集2.0,允許使用否定形式的文字,試基於自頂向下的策略學出命題規則集。 1,2題共同的問題是,如
機器學習(周志華西瓜書) 參考答案 總目錄 轉載至https://blog.csdn.net/icefire_tyh/article/details/52064910
機器學習(周志華西瓜書)參考答案總目錄 從剛開始學習機器學習到現在也有幾個月了,期間看過PDF,上過MOOC,總感覺知道一點了又不是特別明白,最後趁某東買書大減價弄了幾本相關的書來看看,其中一本就是西瓜書。一口氣看了前10章,感覺每章內容都很少,看完感覺還是和
機器學習(周志華) 習題7.3 個人筆記
7.3 試程式設計實現拉普拉斯修正的樸素貝葉斯分類器,並以西瓜資料集3.0為訓練集,對p151“測1”樣本進行判別。 程式設計得到結果為: [0.024223607117715082, 4.4242506192749345e-05] 因此測試例應預測為好瓜。 # -*-
機器學習(周志華) 參考答案 第一章 緒論 1.2
機器學習(周志華) 參考答案 第一章 緒論 1.2 機器學習(周志華西瓜書) 參考答案 總目錄 機器學習(周志華) 參考答案 第一章 緒論 2.與使用單個合取式來進行假設表示相比,使用“析合正規化”將使得假設空間具有更強的表示能力。若使用
機器學習-周志華-第一章
緒論 1.1 引言 什麼是機器學習? 它是一門致力於研究如何通過計算的手段,利用經驗來改善系統自身效能的一門學科。所研究的主要內容是計算機如何通過資料產生模型,即學習演算法。有了學習演算法後,當我們給它提供經驗資料時就能基於這些資料產生模型。在面對新資料時學習演算法會給我們相應的判斷。經驗通常以資料的形