西瓜書 對率回歸 梯度下降法

2021-09-12 09:04:59 字數 2117 閱讀 7557

1 資料集:

在我的部落格裡有.txt格式的

你也可以自己構造,**如下:

density=np.array([0.697,0.774,0.634,0.608,0.556,0.430,0.481,0.437,0.666,0.243,0.245,0.343,0.639,0.657,0.360,0.593,0.719]).reshape(-1,1)

sugar_rate=np.array([0.460,0.376,0.264,0.318,0.215,0.237,0.149,0.211,0.091,0.267,0.057,0.099,0.161,0.198,0.370,0.042,0.103]).reshape(-1,1)

xtrain=np.hstack((density,sugar_rate))

xtrain=np.hstack((np.ones([density.shape[0],1]),xtrain))

ytrain=np.array([1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0]).reshape(-1,1)

2 演算法實現**如下:

import matplotlib.pyplot as plt

import numpy as np

from sklearn.metrics import classification_report

from sklearn import preprocessing

from sklearn.preprocessing import polynomialfeatures

# 資料是否需要標準化

scale = false

# 載入資料

data = np.genfromtxt(r"f:\cda資料分析\data\西瓜書\14917341.txt", delimiter="\t")

# 資料處理,新增偏置項

x_data = data[:,:3]

y_data = data[:,-1,np.newaxis]

#print(x_data)

print(np.mat(x_data).shape)

print(np.mat(y_data).shape)

# 給樣本新增偏置項

x_data = np.concatenate((np.ones((17,1)),x_data),axis=1)

print(x_data.shape)

def sigmoid(x):#回歸公式

return 1.0/(1+np.exp(-x))

def cost(xmat, ymat, ws):#代價函式

left = np.multiply(ymat, np.log(sigmoid(xmat*ws)))#普通相乘(對應元素相乘;點乘用.dot())

right = np.multiply(1 - ymat, np.log(1 - sigmoid(xmat*ws)))

return np.sum(left + right) / -(len(xmat))

# 訓練模型,得到權值和cost值的變化

ws,costlist = gradascent(x_data, y_data)

print(ws)

# 畫圖 loss值的變化

x = np.linspace(0,10000,201)

plt.plot(x, costlist, c='r')

# plt.title('train')

# plt.xlabel('epochs')

# plt.ylabel('cost')

plt.show()

# **

def predict(x_data, ws):

if scale == true:#預處理否

x_data = preprocessing.scale(x_data)

xmat = np.mat(x_data)

ws = np.mat(ws)

return [1 if x >= 0.5 else 0 for x in sigmoid(xmat*ws)]#巢狀表示式

predictions = predict(x_data, ws)

print(classification_report(y_data, predictions))

回歸 梯度下降法

給定 m條訓練資料,假定方法 先說明向量問題,乙個向量就代表一條特徵值 梯度下降公式 重複公式直到 收斂。公式中意思是 1 第i個 2 重複計算1。直到 repeat util convergence python def gradient x,y,bu,number m,n x.shape wei...

西瓜書3 3對率回歸

這是西瓜書第一道實踐題,感覺書裡對於原理講解過於生硬,有點難以理解,所以我更多採用從andrew ng的深度學習中學到的logistic regression來描述 資料如下 編號密度 糖分好瓜 00.697 0.46011 0.774 0.37612 0.634 0.26413 0.608 0.3...

梯度下降法 3 實現線性回歸中的梯度下降法

構造資料集 import numpy import matplotlib.pyplot as plt 設定隨機數種子 numpy.random.seed 666 x 2 numpy.random.random size 100 y x 3.4.numpy.random.normal size 100...