python 实现LDA二分类

import torch
from getData import loadFeatur,loadFeatureByCorrNum,loadFeatureByNorm

from torch_geometric.data import DataLoader
from GCNmodel import GCN,GNN,createGNNdataset
import numpy as np
import random
print("\n---------Starting to load Data---------\n")
# giftedData,commonData,allData=loadFeatureByCorrNum()
giftedData,commonData,allData=loadFeatureByNorm(rootFile='F:/HCP_data/',kind='aparc.a2009s')
# giftedData,commonData,allData=loadFeatureByNorm(rootFile='D:/HCP1200/')
# train_dataset = allData[:300]
# test_dataset = allData[300:]
train_dataset=giftedData[:100]+commonData[:100]#list
test_dataset=giftedData[100:]+commonData[100:]

#####LDA
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

X=[x[0] for x in train_dataset]
y_train=[y[1] for y in train_dataset]
X=np.array(X)
x_train=np.resize(X,(len(train_dataset),9*148))

X_=[x[0] for x in test_dataset]
y_test=[y[1] for y in test_dataset]
X_=np.array(X_)
x_test=np.resize(X_,(len(test_dataset),9*148))

# 进行标准化处理   因为目标结果经过sigmoid函数转换成了[0,1]之间的概率,所以目标值不需要进行标准化。
std = StandardScaler()
x_train = std.fit_transform(x_train)
x_test = std.transform(x_test)
# 逻辑回归预测
lg = LogisticRegression(C=1.0)  # 默认使用L2正则化避免过拟合,C=1.0表示正则力度(超参数,可以调参调优)
lg.fit(x_train, y_train)
# 回归系数
print(lg.coef_)  # [[1.12796779  0.28741414  0.66944043 ...]]
# 进行预测
y_predict = lg.predict(x_test)
print("准确率:", lg.score(x_test, y_test))#0.5159574468085106

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用Python实现线性判别分析,可以使用scikit-learn库中的LinearDiscriminantAnalysis(LDA)类。首先,需要导入LDA类,然后调用其fit()方法,将训练数据集作为参数进行传入,即可完成线性判别分析的训练过程。 ### 回答2: 线性判别分析(Linear Discriminant Analysis,LDA)是一种常用的模式识别和分类方法,适用于多类别分类问题。下面是使用Python实现LDA的步骤: 1. 导入必要的库: ``` import numpy as np from sklearn.discriminant_analysis import LinearDiscriminantAnalysis ``` 2. 准备数据: - 根据问题确定自变量X和因变量y的数据。 - 将数据划分为训练集和测试集。 3. 建模和拟合: - 创建LDA模型对象,例如: ``` lda = LinearDiscriminantAnalysis() lda.fit(X_train, y_train) ``` 4. 可选:选择特征维度: - 如果数据维度较高,可以选择部分特征维度进行降维,提高算法性能。 5. 预测和评估: - 对测试集数据进行预测: ``` y_pred = lda.predict(X_test) ``` - 可选:计算分类准确率等评估指标: ``` accuracy = lda.score(X_test, y_test) ``` 以上是简单的LDA实现步骤,如果需要更多定制化操作,如处理非线性问题、处理缺失值等,可以使用其它相关库和方法。 总结:使用Python实现LDA的关键在于导入合适的库和数据预处理,然后进行模型建立和拟合,最后进行预测和评估。 ### 回答3: 线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的模式识别和分类方法,可以用于特征降维和分类。下面我将简要介绍如何使用Python实现线性判别分析。 步骤1:准备数据集 首先,我们需要准备一个包含已知类别样本的数据集。这个数据集可以是一个二维数组,其中每一行表示一个样本,每一列表示一个特征,最后一列用于表示样本对应的类别。 步骤2:计算类别均值向量 计算每个类别的均值向量,即每个类别中各个特征的平均值。可以使用Numpy库中的mean()函数进行计算。 步骤3:计算类内散度矩阵 计算每个类别内的散度矩阵,用于反映同一类别内样本之间的差异。可以使用Numpy库中的cov()函数进行计算。 步骤4:计算类间散度矩阵 计算类别之间的散度矩阵,用于反映不同类别之间的差异。可以通过计算总体协方差矩阵减去类内散度矩阵来得到。也可以使用Scipy库中的函数进行计算。 步骤5:计算特征值和特征向量 对类内散度矩阵的逆矩阵与类间散度矩阵相乘,得到特征值和特征向量。可以使用Numpy库中的linalg.eig()函数进行计算。 步骤6:选择前k个特征向量 选择与特征值最大的k个特征值对应的特征向量构成投影矩阵。可以通过将特征值按照大小排序,选择前k个特征向量。 步骤7:转换样本 使用投影矩阵将样本从原始空间投影到新的低维空间。可以通过将样本矩阵与投影矩阵相乘来进行转换。 通过以上步骤,我们就完成了线性判别分析的实现。在实际应用中,我们可以使用Python的NumPy和SciPy等科学计算库来实现这些步骤。另外,还可以使用Scikit-learn等机器学习库,其中也包含了线性判别分析的实现方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值