import pandas as pd
from sklearn import discriminant_analysis as da
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
import warnings
warnings.filterwarnings("ignore")
pendigitsPath='./分类任务数据集/pendigits.csv'
LDAPath='./分类任务数据集/LDA-sparse_data.xlsx'
bananaPath='./分类任务数据集/banana.dat'
warnings.filterwarnings("ignore")

def analyze_Data(Data):
    x_train,x_test,y_train,y_test=train_test_split(
        Data.iloc[:,0:-1],
        Data.iloc[:,-1],
        train_size=0.8
    )
    FisherModel=da.LinearDiscriminantAnalysis()#fisher线性判别模型
    LogisticModel=LogisticRegression(random_state=0,max_iter=1000)#Logistic回归分类模型
    accLDA,accLog=0,0#LDA和logistic的准确度
    #进行训练
    FisherModel.fit(x_train,y_train)
    LogisticModel.fit(x_train,y_train)
    #预测
    accLDA=FisherModel.score(x_test,y_test)
    accLog=LogisticModel.score(x_test,y_test)
    return {
        "fisher":accLDA,
        "logistic":accLog
    }
#训练和预测三个数据集,获得每个数据集对应两种模型的精度
if __name__ == '__main__':
    try:
        pendigitsData = pd.read_csv(pendigitsPath)
        LDAData = pd.read_excel(LDAPath, header=1, sheet_name="Sheet1")
        bananaData = pd.read_csv(bananaPath)
    except Exception as e:
        pass
    Datas=[pendigitsData,LDAData,bananaData]
    name=["pendigits","LDA","banana"]
    for i,data in enumerate(Datas):
        print(f"{name[i]}数据集列数为",len(data.columns))
        try:
            ans=analyze_Data(data)
        except Exception as e:
            pass
        print(f"{name[i]}数据集效果:")
        for modelName,acc in ans.items():
            print(f"使用{modelName}的判别系数为{acc}")
        print()

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐