吴恩达Coursera, 机器学习专项课程, Machine Learning:Unsupecommenders, Reinforcement Learning第一周编程作业2
原创
©著作权归作者所有:来自51CTO博客作者楚千羽的原创作品,请联系作者获取转载授权,否则将追究法律责任
吴恩达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
作者:楚千羽