机器学习四大题
线性判别分析
思路
- 分类求样本均值\(\phi_1,\phi_2, \bar X_1, \bar X_2\)
- 求各类样本散列矩阵\(S_1, S_2\)
- 相加->类内散度矩阵\(w = S_w^-1(\bar X_1-\bar X_2)\)
感知机
\[f(X)=sgn(W^TX) \] \[W = (b, w_1, w_2)^T \] \[X = (\alpha, x_1, x_2)^T \] \[w_i = w_i + \alpha*y_i*x_i \] \[b = b + \alpha*y_i \]决策树
- 经验熵\(H(D)=-(p_1\log2p_1 + p_2\log2p_2), p_1, p_2\) 为两种不同的选择的可能
- 求信息各条件信息增益
- 找出信息增益最大项,以该条件将训练集分为两份继续以上操作
朴素贝叶斯
编程题
-
聚类计算度量
return np.linalg.norm(x - y, p)
-
聚类欧式距离
#样本距离 return (np.sum(np.subtract(x, y) ** p)) ** (1 / p) #计算质心 return [np.mean(col) for col in np.transpose(data)] #计算样本质心距离,小->大排序 return sorted([distance(row, Cmass) for row in data])
-
神经网络Relu函数
if x <= 0: return 0 else return x
-
聚类Kmeans函数
km = KMeans(n_clusters = 3, random_state = 888) result = km.fit_predict(data)
-
DBSCAN
dbscan = DBSCAN(eps = 0.5, min_samples = 10) result = dbscan.fit_predict(data) return result
-
线性回归方程组
#mse_score mse = np.mean((y_predict - y_test) * (y_predict - y_test)) #class LinearRegression #fir_normal x = np.hstack([np.ones(len(train_data), 1)), train_data]) self.theta = np.lianlg.inv(x.T.dot(x)).dot(x.T).dot(tranin_label) #predict x = np.hstack([np.ones((len(test_data), 1)), test_data]) return x.dot(self.theta)