人工智能与机器学习 --- Fisher线性分类及可视化

一、基于iris数据集的Fisher线性分类

Python完整代码如下

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.read_csv('F:/COLLEGE-Three/人工智能与机器学习/iris.csv',header=0)
Iris1 = data.values[0:50,0:4]
Iris2 = data.values[50:100,0:4]
Iris3 = data.values[100:150,0:4]
#类均衡向量
m1 = np.mean(Iris1,axis=0)
m2 = np.mean(Iris2,axis=0)
m3 = np.mean(Iris3,axis=0)
#各类内离散度矩阵
s1 = np.zeros((4,4))
s2 = np.zeros((4,4))
s3 = np.zeros((4,4))
for i in range(0,30,1):
    a1 = Iris1[i,:] - m1
    a1 = np.array([a1])
    b1 = a1.T
    s1 = s1 + np.dot(b1,a1)
for i in range(0,30,1):
    a2 = Iris2[i,:] - m2
    a2 = np.array([a2])
    b2 = a2.T
    s2 = s2 + np.dot(b2,a2)
for i in range(0,30,1):
    a3 = Iris3[i,:] - m3
    a3 = np.array([a3])
    b3 = a3.T
    s3 = s3 + np.dot(b3,a3)
#总类内离散矩阵
sw12 = s1 + s2
sw13 = s1 + s3
sw23 = s2 + s3
#投影方向
a = np.array([m1 - m2])
sw12 = np.array(sw12,dtype='float')
sw13 = np.array(sw13,dtype='float')
sw23 = np.array(sw23,dtype='float')
a = m1 - m2
a = np.array([a])
a = a.T
b = m1 - m3
b = np.array([b])
b = b.T
c = m2 - m3
c = np.array([c])
c = c.T
w12 = (np.dot(np.linalg.inv(sw12),a)).T
w13 = (np.dot(np.linalg.inv(sw13),a)).T
w23 = (np.dot(np.linalg.inv(sw23),a)).T
#判别函数以及阈值T(即w0)
T12 = -0.5 * (np.dot(np.dot((m1 + m2),np.linalg.inv(sw12)),a))
T13 = -0.5 * (np.dot(np.dot((m1 + m3),np.linalg.inv(sw13)),a))
T23 = -0.5 * (np.dot(np.dot((m2 + m3),np.linalg.inv(sw23)),a))
kind1 = 0
kind2 = 0
kind3 = 0
newiris1 = []
newiris2 = []
newiris3 = []
for i in range
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值