-
费歇尔分类器对图像进行多分类
2020-04-25 15:55:27费歇尔分类器对图像进行多分类模式识别小白的第一篇文章先验数据的采集费歇尔分类器的原理 模式识别小白的第一篇文章 作为一名遥感系的学生相信模式识别的课设会绞尽大家的脑汁,而这课设题目之一就是利用费歇尔分类...费歇尔分类器对图像进行多分类
模式识别小白的第一篇文章
作为一名遥感系的学生相信模式识别的课设会绞尽大家的脑汁,而这课设题目之一就是利用费歇尔分类器对图像进行多分类,让一个小白本白迷惑不已,那么接下来就会为后面的小白解决这个课设大山。
先验数据的采集
费歇尔分类器是一个监督分类器,它的训练是需要先验数据的,之前在网上找过很多资料,它们给出的费歇尔分类器都是非监督分类的,直接把图像所有的像元扔进去让分类器自己分,刚开始我tm竟然还信了,后面才知道当初是多么的单纯,废话不多说,那么如何采集先验数据呢。相信一幅图像大家都能明白:
现在大家能明白吧,就是把图像上苹果和背景的rgb值取出来,采集的这些rgb值将会作为先验数据进行费歇尔分类器的训练了费歇尔分类器的原理
其实要理解费歇尔分类器还是蛮简单的,但如果要理解背后的原理还是需要自己的推导,相信大家大家学费歇尔分类器的时候都会看到这么一张图:
那么在这里就不细讲原理,在其它平台也很容易搜到,我要讲的就是如何编程实现它,解决大家的课设难题:
算法流程:
1.通过对图像进行采样X1=(R1i,G1i,B1i,Label1i)X2=(R2i,G2i,B2i,
Label2i),其中Label作为对采样数据的一个标识可以为0,1,2…(只要能够区分就可以):
比如:Label=0表示背景,Label=1表示苹果2.对每个类别分别计算协方差矩阵和平均向量:
-----平均向量(u1,u2)
-------样本类内离散度矩阵Si和总样本类内离散度矩阵Sw
3.计算最佳投影向量w*:
即:W*=(Sw的逆)*(u1-u2)
4.将图像中每个像元的RGB三个值装入一个list中,每次取出一个像元的RGB三维向量Sample,代入训练好的Fisher模型中:
求出两类训练样本的列均值 u_1=(R_1,G_1,B_1),u_2=(R_2,G_2,B_2),将上面求出的W分别乘以训练样本的列均值得到转置之后的两类中心,center_1=dot(WT,u_1),center_2=dot(WT,u_2),对取出的Sample做上述类似处理得到转置后在投影直线上的位置position=dot(WT,Sample)
将position分别与center_1,center_2做减法,得到distance_1和distance_2,Sample离哪个类的distance近就划分到该类中。
好了,费歇尔分类器算法的基本原理就是这样,二分类问题就是我们上述的算法,那么多分类问题如何扩展呢?
大家可以这样考虑一下:比如一张照片有苹果,香蕉和纯白的背景,我们如何用费歇尔进行分类呢?
这就是一个三分类的问题,我们可以理解成两个二分类的问题,苹果和香蕉划分成水果类,先用水果类的先验数据与背景先验数据做一次二分类,然后香蕉和苹果再做一次二分类,那么是不是就完成分类问题了呢。好了,大家肯会问先验数据咋采集啊,当然是有方法的,大家可以在ps或者其它图像处理软件中使用取像素值,然后自己记录下来就可以了咯。当然本博主不会这么笨的了,自己写个程序就可以了咯!
费歇尔三分类的部分代码如下:class Fisher: def __init__(self): self.Background = [] self.Object_one = [] self.Object_two = [] self.Object_three = [] self.test_one = [] self.w_w = [] def cal_cov_and_avg(self, samples): # 给定一个类别的数据,计算协方差矩阵和平均向量 u1 = np.mean(samples, axis=0) cov_m = np.zeros((1, 1)) for s in samples: t = s - u1 t = t.reshape(1, 3) cov_m += np.dot(t, t.reshape(3, 1)) return cov_m, u1
第一次在CSDN上写文章,如需本文章完整的代码,可以在评论区留下你的邮箱,我发给你!
-
使用Tensorflow自定义一个线性分类器对‘良/恶性乳腺癌肿瘤’进行预测
2018-02-12 00:12:47对于Tensorflw就不作介绍,仅仅对其应用简单的实现一下利用tensorflow自定义一个线性分类器对‘良/恶性乳腺癌肿瘤’进行预测2 代码实现及结果截图#coding:utf-8#使用tensorflow自定义一个线性分类器对‘良/恶性...1 Tensorflow作为一个开源框架,在深度学习与机器学习方面有着很大的应用。
对于Tensorflw就不作介绍,仅仅对其应用简单的实现一下
利用tensorflow自定义一个线性分类器对‘良/恶性乳腺癌肿瘤’进行预测
2 代码实现及结果截图
#coding:utf-8
#使用tensorflow自定义一个线性分类器对‘良/恶性乳腺癌肿瘤’进行预测
import tensorflow as tf
import numpy as np
import pandas as pd
train=pd.read_csv('/home/guo/桌面/Work/shuju/Breast-Cancer/breast-cancer-train.csv')
test=pd.read_csv('/home/guo/桌面/Work/shuju/Breast-Cancer/breast-cancer-test.csv')
x_train=np.float32(train[['Clump Thickness','Cell Size']].T)
y_train=np.float32(train['Type'].T)
x_test=np.float32(test[['Clump Thickness','Cell Size']].T)
y_test=np.float32(test['Type'].T)
#定义模型
b=tf.Variable(tf.zeros([1]))
w=tf.Variable(tf.random_uniform([1,2],-1,.0,1.0))
y=tf.matmul(w, x_train)+b
loss=tf.reduce_mean(tf.square(y-y_train))
optimizer=tf.train.GradientDescentOptimizer(0.01)
train=optimizer.minimize(loss)
init=tf.initialize_all_variables()
sess=tf.Session()
sess.run(init)
for step in xrange(0,1000):
sess.run(train)
if step%200==0:
print step,sess.run(w),sess.run(b)
test_negative=test.loc[test['Type']==0][['Clump Thickness','Cell Size']]
test_positive=test.loc[test['Type']==0][['Clump Thickness','Cell Size']]
import matplotlib.pyplot as plt
plt.scatter(test_negative['Clump Thickness'], test_negative['Cell Size'],marker='o',s=200,c='red')
plt.scatter(test_positive['Clump Thickness'], test_positive['Cell Size'],marker='x',s=150,c='black')
plt.xlabel('Clump Thickness')
plt.ylabel('Cell Size')
lx=np.arange(0,12)
ly=(0.5-sess.run(b)-lx*sess.run(w)[0][0])/sess.run(w)[0][1]
plt.plot(lx,ly,color='green')plt.show()
-
TF之LiR:利用TF自定义一个线性分类器LiR对乳腺癌肿瘤数据集进行二分类预测(良/恶性)
2019-03-09 23:04:28TF之LiR:利用TF自定义一个线性分类器LiR对乳腺癌肿瘤数据集进行二分类预测(良/恶性) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 X_train = np.float32...TF之LiR:利用TF自定义一个线性分类器LiR对乳腺癌肿瘤数据集进行二分类预测(良/恶性)
目录
输出结果
设计思路
核心代码
X_train = np.float32(train[['Clump Thickness', 'Cell Size']].T) y_train = np.float32(train['Type'].T) X_test = np.float32(test[['Clump Thickness', 'Cell Size']].T) y_test = np.float32(test['Type'].T) b = tf.Variable(tf.zeros([1])) W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0)) y = tf.matmul(W, X_train) + b loss = tf.reduce_mean(tf.square(y - y_train)) optimizer = tf.train.GradientDescentOptimizer(0.01) train = optimizer.minimize(loss) sess = tf.Session() sess.run(init) for step in range(0, 1000): sess.run(train) if step % 200 == 0: print(step, sess.run(W), sess.run(b))
-
SVM多分类器算法-一对多
2020-02-28 11:40:29 -
弱分类器对Haar特征进行分类
2017-04-20 19:47:15由于在训练的时候,选择的训练样本集的尺寸等于检测子窗口的尺寸,检测子窗口的尺寸决定了矩形特征的数量,所以训练样本集中的每个样本的特征相同且数量相同,而且一个特征对一个样本有一个固定的特征值。... -
利用 sklearn SVM 分类器对 IRIS 数据集分类
2018-11-24 16:34:00利用 sklearn SVM 分类器对 IRIS 数据集分类 支持向量机(SVM)是一种最大化分类间隔的线性分类器(如果不考虑核函数)。通过使用核函数可以用于非线性分类。SVM 是一种判别模型,既适用于分类也适用于回归问题,... -
一句话总结贝叶斯分类器
2018-10-05 08:16:17一句话总结贝叶斯分类器 核心:将样本判定为后验概率最大的类。 贝叶斯分类器直接用贝叶斯公式解决分类问题。假设样本的特征向量为x,类别标签为y,根据贝叶斯公式,样本属于每个类的条件概率(后验概率)... -
knn原理介绍以及构建一个KNN分类器来进行图像分类
2018-08-22 16:20:48构建一个KNN分类器来进行图像分类 K-NN原理介绍 K近邻算法(K-NN)算法是一种简单但也很常用的一种分类算法,它也可以应用于回归计算。K-NN是无参数学习,这意味着它不会对底层数据的分布做出任何假设。它是基于... -
贝叶斯分类器(一)
2016-08-04 15:50:35贝叶斯推理提供了一种概率(主要应用条件概率)学习...贝叶斯分类器分成两个部分,第一部分对基础知识、贝叶斯决策论、极大似然估计、朴素贝叶斯分类器和半朴素贝叶斯分类器进行介绍,第二部分对贝叶斯网进行详细介绍。 -
机器学习——对分类器和对回归器的评分
2019-02-25 22:10:24使用准确率、精确率和召回率对分类器进行评分: accuracy_score:准确率。是指在测试数据集中,那些预测正确的数据点的数量除以整个测试数据集的大小,是最基本的评分函数。 precision_score:精确率。例如在分别猫... -
Python机器学习--训练一个分类器
2019-03-14 22:57:51目录 ...3. 使用python实现一个线性分类器 情景带入: 我们将输入的信号与对应的权值进行乘法运算,得到的结果进行加法运算,得到输出结果.通过对比输出结果与阈值的相对大小,对数据进行分类.... -
分类器学习(一)
2017-03-12 11:21:44----->首先使用J48分类器对天气数据集进行训练,得到如下图所示的决策树 ----->其次使用记事本,自己构建一个测试数据集 @relation weather.symbolic @attribute outlook {sunny,overcast,rainy} @... -
机器学习分类数据集_一个很好的机器学习分类器对扑克手数据集的准确性指标
2020-09-06 12:06:58机器学习分类数据集 什么是数据集? (What is the dataset?) The Poker Hand dataset [Cattral et al., 2007] is publicly available and very well-documented at the UCI Machine Learning Repository [Dua et al.... -
模式识别的经典算法之一,感知器算法,用来对模式进行分类,采用matlab编写
2010-05-21 17:50:18模式识别的经典算法之一,感知器算法,用来对模式进行分类,采用matlab编写 -
MATLAB实现“一对一”多分类方法
2012-07-12 09:35:59程序是用于解决多分类问题的“一对一”方法,程序中有个二分类接口是高斯过程分类器,用户可以进行修改,用什么分类器都可以。该程序是用MATLAB把一对一的思想写成了代码。 -
Mahout0.6-贝叶斯分类器对文本分类
2013-08-14 15:04:491.1.1 数据描述 此处使用朴素的贝叶斯对20Newsgroup文本数据进行分类,20Newsgroup是路透社的新闻预料库,其包括...如何使用Mahout的朴素贝叶斯模型训练一个分类模型,并使用这个分类模型对测试数据进行分类。 1.1.2 20 -
分类器
2015-05-21 22:50:12分类问题与回归问题区别在于y的范围,回归问题对y的精度来得高,所以对...最基本的线性分类器,是digression classifier的一种,目的在于找到一个将定义域一分为二的平面/直线以期对数据进行分类。那么对于找到的分界线 -
使用Tensorflow自定义一个线性分类器用于对“良/恶性乳腺癌肿瘤”进行预测
2017-09-20 17:04:01import tensorflow as tf import numpy as np import pandas as pd train = pd.read_csv('breast-cancer-train.csv') test = pd.read_csv('breast-cancer-...#分割特征与分类目标 x_train = np.float32(train[['Clu -
训练数据对分类器性能的影响
2017-10-20 17:32:17之前一个朋友托我试验一下训练数据的不平衡性对分类器会有多大影响,他所用的分类器是支持向量机(SVM),用来做文本分类。这本身是一个已经研究得比较多的领域了,也已经有比较成熟甚至可以直接在生产中使用的工具... -
将基本二分类分类器转化为多类别分类器
2018-09-12 15:55:29一对一方法是在任意两类样本之间设计创建一个二值分类器,对每一个样本都需要用所有的二值分类器进行分类,然后得票最多的类别即为该未知样本的预测类别。这样的话,两类样本我们就要设计C22个分类器,三类样本就要... -
CS231对SVM及Softmax分类器的理解
2019-05-07 23:10:04不同之处在于对f中分值的解释:SVM分类器将它们看作是分类评分,它的损失函数鼓励正确的分类(即图中的蓝色类别2)的分值比其它分类的分值高出至少一个边界值。Softmax分类器将这些数值看作是每个分类没有归一化的... -
通过感知器实现对鸢尾花的分类
2017-12-17 20:58:52在上一篇文章我们用python实现感知器算法,这篇文章中将介绍如何通过感知器算法来实现对鸢尾花的分类。鸢尾花数据集地址https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data,一共包含了150... -
精度是远远不够的:如何最好地评估一个分类器?
2020-04-01 13:43:45分类模型(分类器)是一种有监督的机器学习模型,其中目标变量是离散的(即类别)。评估一个机器学习模型和建立模型一样重要。我们建立模型的目的是对全新的未见过的数据进行处理,因此,要建立一个鲁棒的模型,就... -
使用gensim和sklearn搭建一个文本分类器(二):代码和注释
2016-09-12 17:49:00在之前的 使用gensim和sklearn搭建一个文本分类器(一):流程概述 中,叙述了一个使用lsi来对文本进行向量化,再使用线性核svm进行分类的文本分类器。在这篇文章中,沿着之前的思路,提供了该文本分类器的具体实现... -
adaboost的样本权值如何对弱分类器产生影响
2018-04-09 16:48:13参照https://www.zhihu.com/question/26957827?sort=created,感谢作者以SVM这样...2. 训练出的多个分类器,基本是相似位置的超平面,也就是说,最后组合得到的还是一个线性分类器,因此模型对数据的拟合能力,不如... -
[机器学习]一个例子完美解释朴素贝叶斯分类器
2018-02-28 18:16:50最简单的解决方案通常是最强大的解决方案,而朴素贝叶斯就是一个很好的证明。尽管机器学习在过去几年取得了巨大的进步,但朴素贝叶斯已被证明不仅简单,而且快速、准确、可靠。它已经成功地用于许多项目中,而且它对... -
博客第一弹 ---- opencv 基于hog特征训练二分类器
2019-05-15 11:15:50博客第一弹 ---- opencv 基于hog特征训练二分类器 成为算法工程师的第一年,很感恩csdn众多博客对我的帮助,现在也想分享一些错误纠察和训练记录,一方面方便自己理清工作思路和进展,一方面为和我一样初始进入图像... -
用PyTorch创建一个图像分类器?So easy!(Part 2)
2018-12-20 11:37:45在第一部分中,我们知道了为什么以及如何加载预先训练好的神经网络,我们可以用自己的分类器代替已有神经网络的分类器。那么,在这篇文章中,我们将学习如何训练分类器。 训练分类器 首先,我们需要为分类器提供待...
-
信息系统密码应用测评要求.rar
-
Unity 热更新技术-ILRuntime
-
91国产产在线精品亚洲第一区蕉香香亚洲aav综合avv国产产avv中文在线和五月丁丁香综合网甄好看啊
-
2021 年该学的 CSS 框架 Tailwind CSS 实战视频
-
spark大数据分析与实战
-
Python启蒙到架构师的核心技术精讲课程
-
从入门到精通!面试字节跳动Android工程师该怎么准备?移动架构师成长路线
-
自动化测试Python3+Selenium3+Unittest
-
物联网配电室环境远程监控运维系统解决方案
-
linux文件系统.docx
-
红警3百科全书 v1.0.0.exe
-
03.通过事件往子组件发送信息-----------------VUE重温学习
-
MySQL NDB Cluster 负载均衡和高可用集群
-
Real-time execution for IEC 61499.pdf
-
元宵 | TcaplusDB君邀您来猜灯谜!
-
WebOffice.rar
-
BiLSTM.rar
-
DoTween.rar
-
SecureCRT 连接 GNS3/Linux 的安全精密工具
-
Jsplumb从入门到实战