吴恩达Coursera, 机器学习专项课程, Machine Learning:Unsupervised Learning, Recommenders, Reinforcement Learning第一周所有jupyter notebook文件2:

吴恩达Coursera, 机器学习专项课程, Machine Learning:Unsupervised Learning, Recommenders, Reinforcement Learning第一周所有jupyter notebook文件(包括实验室练习文件)1

本次作业

Exercise 1

# UNQ_C1
# GRADED FUNCTION: estimate_gaussian

def estimate_gaussian(X):
"""
Calculates mean and variance of all features
in the dataset

Args:
X (ndarray): (m, n) Data matrix

Returns:
mu (ndarray): (n,) Mean of all features
var (ndarray): (n,) Variance of all features
"""

m, n = X.shape

### START CODE HERE ###
mu = np.zeros((n,1))
var = np.zeros((n,1))

mu = np.mean(X, axis=0) # axis=0表示列,每列的均值
var = np.var(X,axis=0) # 求每列的方差

### END CODE HERE ###

return mu, var

Exercise 2

# UNQ_C2
# GRADED FUNCTION: select_threshold

def select_threshold(y_val, p_val):
"""
Finds the best threshold to use for selecting outliers
based on the results from a validation set (p_val)
and the ground truth (y_val)

Args:
y_val (ndarray): Ground truth on validation set
p_val (ndarray): Results on validation set

Returns:
epsilon (float): Threshold chosen
F1 (float): F1 score by choosing epsilon as threshold
"""

best_epsilon = 0
best_F1 = 0
F1 = 0

step_size = (max(p_val) - min(p_val)) / 1000

for epsilon in np.arange(min(p_val), max(p_val), step_size):

### START CODE HERE ###
cvPrecision = p_val < epsilon
tp = np.sum((cvPrecision == 1) & (y_val == 1)).astype(float) # sum求和是int型的,需要转为float
fp = np.sum((cvPrecision == 1) & (y_val == 0)).astype(float)
fn = np.sum((cvPrecision == 0) & (y_val == 1)).astype(float)
precision = tp/(tp+fp) # 精准度
recision = tp/(tp+fn) # 召回率
F1 = (2*precision*recision)/(precision+recision) # F1Score计算公式
### END CODE HERE ###
if F1 > best_F1:
best_F1 = F1
best_epsilon = epsilon

return best_epsilon, best_F1

作者:​​楚千羽​​