2020.3.27
報了深度之眼的西瓜書推導課程,在此記錄一下自己的學習過程。課程介紹收穫:
(1)別想一次性看懂所有知識點
(2)課程之前得先自己推導下課程,找出自己的問題,課程上尋找答案
from sklearn.datasets import fetch_openml
from sklearn.linear_model import logisticregression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import standardscaler
from sklearn.utils import check_random_state
import pandas as pd
import time
import matplotlib.pyplot as plt
import numpy as np
df = pd.
read_csv
('/home/cai/python/pytorch-yolov3-master/sbddataset/chainercv/mnist_784.csv'
)# 讀取資料
x= df.iloc[:,
:-1]
.values
y = df.iloc[:,
-1].values
print
(__doc__)
t0=time.
time()
train_samples=
5000
# x,y=
fetch_openml
('mnist_784'
,version=
1,return_x_y=true)
# x,y=
fetch_openml
('mnist_784'
,data_home=
)#打亂順序
random_state=
check_random_state(0
)permutation=random_state.
permutation(x
.shape[0]
)x=x
[permutation]
y=y[permutation]x=
x.reshape((
x.shape[0]
,-1)
)#分出訓練集和測試集
x_train,x_test,y_train,y_test=
train_test_split(x
,y,train_size=train_samples,test_size=
10000
)scaler=
standardscaler
() #歸一化
x_train=scaler.
fit_transform
(x_train)
x_test=scaler.
transform
(x_test)
#設定邏輯回歸分類器,
c:正則化係數λ的倒數,
multi_class:分類方式選擇引數,str型別,可選引數為ovr和multinomial,預設為ovr。ovr即前面提到的one-vs-
rest
(ovr),而multinomial即前面提到的many-vs-
many
(mvm)。
penalty:懲罰項,str型別,可選引數為l1和l2,預設為l2。用於指定懲罰項中使用的規範。newton-cg、sag和lbfgs求解演算法只支援l2規範。
solver:優化演算法選擇引數,只有五個可選引數,即newton-cg,lbfgs,liblinear,sag,saga。saga:線性收斂的隨機優化演算法的的變重。
tol:停止求解的標準,float型別,預設為1e-4。就是求解到多少的時候,停止,認為已經求出最優解。
clf=
logisticregression(c
=50.
/train_samples,
multi_class=
'multinomial'
, penalty=
'l1'
,solver=
'saga'
,tol=
0.1)
#迭代收斂
#clf.
fit(x_train,y_train)
#y=w*x+b,目的是要求出w和b
#coef是權重,10×784的矩陣,相當於w,intercept是偏置,10行的向量,相當於b,
#求出權重引數中0的佔比,
sparsity=np.
mean
(clf.coef_==0)
*100
#評價測試集的回歸準確度
score=clf.
score
(x_test,y_test)
#print
('best c %.4f'
%clf.
c__)
print
("sparsity with l1 penalty:%.2f%%"
%sparsity)
print
("test score with l1 penalty:%.4f"
%score)
coef=clf.coef_.
copy()
plt.
figure
(figsize=(10
,5))
#找出權重中最大的數值
scale=np.
abs(coef)
.max()
for i in
range(10
):l1_plot=plt.
subplot(2
,5,i+1
) #權重是10×784,把每一行取出來,轉成28×28的形式顯示出來,interpolation表示最近零插值,cmap表示選擇的顏色型別,vmin設定最小值
l1_plot.
imshow
(coef[i]
.reshape(28
,28),interpolation=
'nearest'
, cmap=plt.cm.rdbu,vmin=
-scale,vmax=scale)
l1_plot.
set_xticks((
))l1_plot.
set_yticks((
))l1_plot.
set_xlabel
('class %i'
%i)plt.
suptitle
('classification vector for...'
)run_time=time.
time()
-t0print
('example run in %.3f s'
%run_time)
plt.
show
()
歸一化: 有關standardscaler的transform和fit_transform方法.
權重引數: python——sklearn 中 logistics regression 的 coef_ 和 intercept_ 的具體意義.
機器學習西瓜書筆記 1 緒論
書上要比別人的總結好理解的多 別人說來真覺淺,還需自己來深讀 機器學習輔助2012年美國 歐巴馬以及自動駕駛,其實都非常無比的說明 機器學習無比有前途,可以應用在生活的各個方面 機器學習正是這樣一門學科,它致力於研究如何通過計算的手段,利用經驗來改善系統自身的效能 在計算機系統中,經驗 通常以 資料...
《機器學習》西瓜書習題 第 1 章
表 1.1 中若只包含編號為 1 和 4 的兩個樣例,試給出相應的版本空間.這應該不難理解吧,直接上 編號色澤 根蒂敲聲 好瓜 1 青綠蜷縮濁響是 4 烏黑稍蜷沉悶否 與使用單個合取式來進行假設表示相比,使用 析合正規化 將使得假設空間具有更強的表示能力.例如 好瓜 leftrightarrow b...
機器學習西瓜書課後習題答案 1 緒論
1.訊息推送 比如當我搜尋 機器學習 之後,再開啟某些網頁的時候,會推送有關機器學習培訓的廣告 或參考 以下是部落格的結果 1.1求版本空間 首先看版本空間的定義,這篇文章寫的很好 概況說來,版本空間就是從假設空間剔除了與正例不一致和與反例一致的假設,它可以看成是對正例的最大泛化。現在只有西瓜1和西...