鸢尾花的分类三分类问题

鸢尾花的分类

首先先导入会使用到的包

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split 
from numpy import random
import numpy as np
import numpy.random as rd
import matplotlib.pyplot as plt
import math

然后对数据进行划分为测试集与训练集

X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target)

然后尝试打印出X_train.shape来查看其有多少特征值

print(X_train.shape)
	(112, 4)

可知一共有112组数据有4个特征值
再打印y_train来查看有多少中分类

print(y_train)
array([2, 1, 0, 0, 0, 2, 0, 1, 1, 1, 1, 0, 1, 1, 2, 1, 2, 1, 0, 2, 0, 0,
       2, 2, 1, 1, 0, 1, 2, 0, 1, 2, 2, 2, 2, 1, 0, 0, 1, 0, 1, 2, 2, 2,
       2, 2, 2, 0, 0, 1, 2, 1, 0, 2, 2, 0, 0, 1, 1, 2, 0, 1, 2, 0, 1, 0,
       0, 0, 0, 0, 2, 2, 0, 1, 1, 0, 0, 2, 2, 2, 2, 1, 2, 1, 2, 1, 0, 0,
       0, 0, 1, 1, 2, 2, 1, 2, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 1, 2, 1, 0,
       1, 0])

可知一共有三种类型 分别为0,1,2
对每一组数据我们可以通过给出对0,1,2三种类型的概率来体现出是哪种类型的鸢尾花的概率大 比如[0.25,0.2,0.55]分别表面有0.25的概率为0型的鸢尾花有0.2的概率为1型的鸢尾花有0.55的概率为2型的鸢尾花,对此我们判定其为2型的鸢尾花。但是其结果并不一定就是2型的鸢尾花,如果不是,那么我们应该是的0.55的概率尽可能的减小让正确的那个概率尽可能的变大。
我们可以使用y=kx+b y为预测的值 x为训练集 k与b为系数
y应该是112乘3的矩阵 已知x为112乘4的矩阵 b为0
y可以变化为x
k+b
所以k为4*3的矩阵
因为一开始我们并不能确定k的值的大小 所以我们可以随机生成

k,b =  np.random.rand(4,3), 0
print(k)
array([[0.31635924, 0.2329209 , 0.22559666],
       [0.73691415, 0.86794294, 0.37659187],
       [0.27317436, 0.9867018 , 0.09955569],
       [0.6701651 , 0.69010967, 0.78548111]])

因为y中的值表示的意思为其对应的类型的概率所以可知其>=0 且这三个值应该相加为1.但是有x*k+b所得到的y有极大的可能不满足这要求,但是我们可以通过softmax()函数来达到这要求
Sofmax()介绍:
softmax函数,又称归一化指数函数。它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。下图展示了softmax的计算方法:

softmax直白来说就是将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标!
以下为softmax函数的定义
def softmax(x):
return np.exp(x) / np.tile(np.sum(np.exp(x), axis=1).reshape(112, 1), 3)
有上面打印出来的y_train可知y_train的值为0,1,2 而我们输出的预测值为[?,?,?]所以我们需要将其改为1*3的形式

y_train_1=[]
for i in range(len(y_train)):
    if y_train[i]==0:
        y_train_1.append([1,0,0])
    if y_train[i]==1:
        y_tr
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值