多元统计分析 Fisher 线性判别分析 和 Logistic 回归分析
·
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()
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)