编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

机器学习理论类常见面试题(四)(机器学习与技术面试题)

wxchong 2024-10-06 04:10:11 开源技术 12 ℃ 0 评论

怎么简单使用 LDA 来划分数据且可视化呢?

LDA 的全称为 Linear Discriminant Analysis, 中文为线性判别分析,LDA 是一种有监督 学习的算法,和 PCA 不同。PCA 是无监督算法,。LDA 是“投影后类内方差最小,类间方 差最大”,也就是将数据投影到低维度上,投影后希望每一种类别数据的投影点尽可能的 接近,而不同类别的数据的类别中心之间的距离尽可能的大。

使用的数据集 iris # 导入相关库
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis %matplotlib inline
#解决中文显示问题,Mac %matplotlib inline
from matplotlib.font_manager import FontProperties
# 设置显示的尺寸
plt.rcParams['font.family'] = ['Arial Unicode MS'] #正常显示中文
# 导入数据集
iris = load_iris()
iris_x, iris_y = iris.data, iris.target
# 实例化
lda = LinearDiscriminantAnalysis(n_components=2)
# 训练数据
x_lda_iris = lda.fit_transform(iris_x, iris_y)
# 自定义一个可视化的方法
label_dict = {i:k for i,k in enumerate(iris.target_names)} def plot(x,y,title,x_label,y_label):
ax = plt.subplot(111)
for label,marker,color in zip( range(3),('^','s','o'),('blue','red','green')):
plt.scatter(x=x[:,0].real[y == label], y = x[:,1].real[y == label],
color = color,
alpha = 0.5,
label = label_dict[label] )
plt.xlabel(x_label) plt.ylabel(y_label)
leg = plt.legend(loc='upper right', fancybox=True) leg.get_frame().set_alpha(0.5)
plt.title(title)
# 可视化
plot(iris_x, iris_y,"原始的 iris 数据集","sepal length(cm)","sepal width(cm)")
plt.show()
plot(x_lda_iris, iris_y, "LDA Projection", "LDA1", "LDA2")

你觉得 batch-normalization 过程是什么样的

? 按batch进行期望和标准差计算

? 对整体数据进行标准化

? 对标准化的数据进行线性变换

? 变换系数需要学习

激活函数有什么用?常见的激活函数的区别是什么?

? 激活函数作用:
如果不用激励函数(其实相当于激励函数是 f(x) = x),在这种情况下你每一层 节点的输入都是上层输出的线性函数,很容易验证,无论你神经网络有多少层,输 出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了,那么网络的逼近能力就相当有限。正因为上面的原因,我们决定 定引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大(不再是 输入的线性组合几乎乎可以逼近任意函数)。

Softmax 的原理是什么?有什么作用?


Softmax 用于多分类神经网络输出,目的是让大的更大。函数公式是

示意图如下:

Softmax 是 Sigmoid 的扩展,当类别数 k=2 时,Softmax 回归退化为 Logistic 回归。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表