深圳做网站开发费用,溧阳做网站价格,怎样学网络推广,没学历最吃香的职业线性判别分析((Linear Discriminant Analysis #xff0c;简称 LDA)是一种经典的线性学习方法#xff0c;在二分类问题上因为最早由 [Fisher,1936] 提出#xff0c;亦称 ”Fisher 判别分析“。并且LDA也是一种监督学习的降维技术#xff0c;也就是说它的数据集的每个样本都… 线性判别分析((Linear Discriminant Analysis 简称 LDA)是一种经典的线性学习方法在二分类问题上因为最早由 [Fisher,1936] 提出亦称 ”Fisher 判别分析“。并且LDA也是一种监督学习的降维技术也就是说它的数据集的每个样本都有类别输出。这点与主成分和因子分析不同因为它们是不考虑样本类别的无监督降维技术。 LDA 的思想非常朴素给定训练样例集设法将样例投影到一条直线上使得同样样例的投影尽可能接近、异样样例的投影点尽可能远离在对新样本进行分类时将其投影到同样的这条直线上再根据投影点的位置来确定新样本的类别。其实可以用一句话概括就是“投影后类内方差最小类间方差最大”。鸢尾花简介
iris数据集的中文名是安德森鸢尾花卉数据集英文全称是Anderson’s Iris data set。iris包含150个样本对应数据集的每行数据。每行数据包含每个样本的四个特征和样本的类别信息所以iris数据集是一个150行5列的二维表。
通俗地说iris数据集是用来给花做分类的数据集每个样本包含了花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征前4列我们需要建立一个分类器分类器可以通过样本的四个特征来判断样本属于山鸢尾、变色鸢尾还是维吉尼亚鸢尾这三个名词都是花的品种。
iris的每个样本都包含了品种信息即目标属性第5列也叫target或label。
代码
#首先导入相关库
import sklearn
from sklearn.datasets import load_iris
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
#再进行数据的划分
data load_iris(return_X_yTrue)
x,y data
#print(x)
#print(y)
#分割训练集和测试集
train_x,test_x,train_y,test_y train_test_split(x,y,test_size0.3)
print(train_x.shape)
print(test_x.shape)
#进行训练
LDA LinearDiscriminantAnalysis()
LDA.fit(train_x,train_y)
y_predict LDA.predict(test_x)
print(test_y)
print(y_predict)
相关输出如下
[2 1 2 1 0 2 2 0 2 0 1 2 1 0 1 0 0 0 0 2 2 1 2 1 0 1 1 2 2 0 2 1 2 0 2 1 21 0 2 0 0 1 0 2]
[2 1 2 1 0 2 2 0 2 0 1 2 1 0 1 0 0 0 0 2 2 1 2 1 0 1 1 2 2 0 2 1 2 0 2 1 21 0 2 0 0 1 0 2]
#计算预测正确率
j 0
for i in range(len(test_y)):if test_y[i] y_predict[i]:j j 1
print(j)
print(j/len(y_predict))
画图部分
#由于是按照萼片长度宽度计算所以将萼片长宽与相应的类别组合成新的列表
total_sepal []
for i in range(x.shape[0]):sepal []sepal.append(x[i][0])sepal.append(x[i][1])sepal.append(y[i])total_sepal.append(sepal)
print(total_sepal)
#画图
for i in range(x.shape[0]):if(total_sepal[i][2] 0):plt.scatter(total_sepal[i][0], total_sepal[i][1], colorblue)if(total_sepal[i][2] 1):plt.scatter(total_sepal[i][0], total_sepal[i][1], colorred)if(total_sepal[i][2] 2):plt.scatter(total_sepal[i][0], total_sepal[i][1], colorgreen)
plt.show()