Scikit-learn section8 for cvpytorch

英文官方教程链接如下:

https://scikit-learn.org/stable/modules/lda_qda.htmlhttps://scikit-learn.org/stable/modules/lda_qda.html这一部分还是挺麻烦的,生词较多,没有直接的代码。不过,我发现了,点击图片就会跳出更详细相关内容的详细代码和可视化,大家可以试着从跟详细的内容里学习。我就简单说说了。


LinearDiscriminantAnalysis 和 QuadraticDiscriminantAnalysis 是两种经典的分类器。前者是线性的,后者是二次的。他们有相似的易于计算的解决方案 (solutions),有效且没有要调的超参数。


LinearDiscriminantAnalysis 通过将输入数据映射到线性子平面——由最大化不同类别间的分离方向构成,可用于执行监督降维。输出维度必然小于类别数量。它在 transformer 方法里被实施,需要的维度可以通过 n_components 参数设置,这个参数对 fit 和 predict 都没影响。

参数描述
solverdefault='svd',lsqr、eigen可选。
shrinkage'auto' 或 float (0到1之间),default=None,收缩参数
priorsdefault=None,形为 (n_classes,) 的数组。类先验概率 (the class prior probabilities),默认情况下,它是由训练数据推理得到的
n_componentsint,default=None,用来降维的成分数量,<=min(n_classes-1,n_features)。如果设为None,那就是min(n_classes-1,n_features),它只对 transform 方法有作用
store_covariancedefault=False,如果为True,当 solver='svd',直接计算类内权重系数矩阵。这个矩阵一直被计算并存着给其他的 solver 用
tolfloat,default=1.0e-4,要考虑的 X 的奇异值的绝对阈值,用来评估 X 的秩。奇异值不显著的维度将被丢弃。只有 solver='svd' 的时候被使用
covariance_estimatordefault=None,协方差评估器。如果为None,它将品谷歌协方差矩阵而不是以来有潜在收缩的经验协方差评估器。如果用了 shrinkage,那他将被设为None。只有 solver='lsqr' or 'eigen' 时奏效
类属性
.coef_
intercept_
.covariance_形为 (n-features,n-features) 的数组。类内权重协方差矩阵。(还有一句我没看懂)
.explained_variance_ratio_形为 (n-components,) 的数组,被每一个被选择的成分解释的变量占比。如果 n_components 没有被设置,那所有的成分都被存储,并且被解释的变量和为1.0。只有 solver='svd' or 'eigen' 奏效
.means_形为 (n-classes,n-features) 的数组。class-wise means
.priors_形为 (n-classes,) 的数组。class priors,和为1
.scalings_形如 (ranks,n-classes-1) 的数组,在空间上被类质心扫面的特征的缩放。只有 solver='svd' or 'eigen' 奏效
.xbar_形为 (n-features,) 的数组。全局均值,只有 solver='svd' 奏效
.classes_形为 (n-classes,) 的数组。独一无二的类标签
.n_features_in_
.feature_names_in_
from matplotlib import pyplot as plt
from sklearn import datasets
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
wine = datasets.load_wine()
data = wine.data
print(data)
target = wine.target
print(target)
#[0 ···,1 ···,2 ···]
target_names = wine.target_names
print(target_names)
#['class_0' 'class_1' 'class_2']
lda = LinearDiscriminantAnalysis(n_components=2)
X_r = lda.fit(data,target).transform(data)
#transform的输入是形如(n_samples, n_features)的数组
#输出是形如(n_samples, n_components)的转换数据
print(X_r)
#截取了前三行,还望能看懂的人不吝赐教
# [[-4.70024401  1.97913835]
#  [-4.30195811  1.17041286]
#  [-3.42071952  1.42910139]
colors = ["navy", "turquoise", "darkorange"]
plt.figure()
for color, i, target_name in zip(colors, [0, 1, 2], target_names):
    plt.scatter(
        X_r[target == i, 0], X_r[target == i, 1], alpha=0.8, 
        color=color, label=target_name)
#参数1是x,参数2是y,alpha我没弄懂
plt.legend(loc="best", shadow=False, scatterpoints=1)
#在轴上放置图例,就是小方框
plt.title("LDA of wine dataset")
plt.show()

QuadraticDiscriminantAnalysis 的使用方法类似,大家自己看一看吧。官网的这一页还有还多的数学公式,这里我就不讲了,因为我现在也弄不懂,等我弄懂了再和大家分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值