
Python&机器学习
文章平均质量分 66
1
YH_24H
学无止境!!---时间太短,要求挺多,速学速用,速用速忘,忘了再学。所以笔记很重要。
展开
-
单分类支持向量机 网格搜索
参考,太久远了,应该是这个网站,但是很难搜到,国内搜索比较麻烦通过网格搜索是为支持向量机找到最佳值参数。单分类支持向量机一般拿来做异常检测任务,直接使用GridSearchCV不太好写。可以借用for循环和ParameterGrid实现,目标是AUCfrom sklearn.model_selection import ParameterGridfrom sklearn.metrics import roc_auc_scoreimport numpy as np from sklearn i原创 2022-04-15 10:18:52 · 1423 阅读 · 0 评论 -
高光谱图像分类源代码(UI,波段选择,独立成分分析,人工蜂群,SVM,)
工程效果介绍用pyqt搭建了一个UI,使用了ICA,FCM-ABC两种方法做了波段选择,和全波段三种数据对比,通过SVM(支持向量机)做了高光谱图像分类,并计算OA涉及1. Pavia University 图像分类用的是支持向量机分类,简单效果好2. pyqt界面本来想用qt,但是写分类这些,python挺好用的,就用python qt写的界面,并且UI和逻辑是分类的。ui.py是整个界面的文件,progressBar.py是进度圈的代码3. 波段选择算法3.1 模糊C均值聚类+人工蜂原创 2021-07-18 18:55:24 · 2015 阅读 · 3 评论 -
移步pytorch出现的问题
安装安装不会出现冲突,需要同时安装torch和和torchvision,版本需要对应起来.版本对应链接gpu和cpu版本不一样标签之前用梯度是没有管标签的,但是跑这个,标签居然要从0开始,二分类标签一个1一个2然后就报错...原创 2021-05-27 20:24:04 · 120 阅读 · 0 评论 -
python下的spectral模块(高光谱图像处理)
Spectral Python (SPy)是一个用于处理高光谱图像数据的纯Python模块。它具有读取、显示、操作和分类高光谱图像的功能。之所以用它是因为这个对多波段图像的支持更好参考一、SPy 安装依赖模块虽然可以只用Python和NumPy来使用SPy来处理高光谱数据,但如果想使用SPy的任何图形功能,你还需要其他几个模块要在IPython中使用SPy,您需要在" pylab "模式下启动IPython(请参阅启动IPython)安装pip install spectral二、读取原创 2021-04-09 16:57:25 · 27980 阅读 · 27 评论 -
基于注意力的卷积神经网络高光谱波段选择
原文名词Attention机制BBs building blocksDL deep learningHSI Hyperspectral image1D one dimensionalFMs feature mapsEE Elliptical Envelope概述它将新的基于注意的卷积神经网络结合起来,根据波段的重要性对波段进行加权,并利用异常检测技术选择最重要的波段。所提出的基于注意的方法是数据驱动的,在深度体系结构的不同深度重新使用卷积激活,识别光谱中信息最丰富的区域翻译 2021-01-17 16:53:46 · 2423 阅读 · 3 评论 -
图像一维熵、二维熵、局部熵及python实现
1 基础熵年岁很大,建国前一年香农提出来的的,成精了。熵指的是体系的混乱的程度,越乱越大。图像熵是图像特征的一种统计形式,反映了图像中平均信息量的多少,能够反映图像各像素点的分布复杂程度。1.1 图像一维熵只能表示图像灰度值的聚集特征,不能表征空间特征。公式:H=−∑i=0255log2piH = - \sum_{i=0}^{255}log_2p_iH=−i=0∑255log2pi其中Pi表示图像中灰度值为i(0≤i≤255)的像素所占的比例,熵非负1.2 二维熵为表征灰度信息的空原创 2021-01-15 14:08:33 · 22217 阅读 · 31 评论 -
python处理ini文件(configparser模块)
代码里有些参数需要保存,下一次运行还能用,就需要要ini等文件了了。ini文件是文本文件,例如有如下[section1]name1 = value1name2 = value2option = 3[section2]name3 = value1每个section的值不会干扰获取文件中所有sectionpath='ini文件路径'conf = configparser.ConfigParser()conf.readfp(open(path,encoding="utf-8-sig"))原创 2020-09-29 17:21:20 · 478 阅读 · 0 评论 -
嵌套列表生成csv,读取csv,嵌套列表float转换为int
嵌套列表生成csv,读取csv,嵌套列表float转换为int列表生成csv文件a=[[1,2,3],[4,5,6],[7,8,9]]path=r'C:\Users\Administrator\Desktop\testimage\20200922_1X.csv'test=pd.DataFrame(a)test.to_csv(path, encoding='gbk')从csv中读取文件data=pd.read_csv(path,index_col=0) #将csv文件读入并转化为datafra原创 2020-09-22 20:05:54 · 973 阅读 · 0 评论 -
pyqt调用屏幕键盘
参考 layout.addWidget(QPushButton( '打开虚拟键盘', self, clicked=self._onOpenKeyboard)) kernelType = QSysInfo.kernelType()#操作系统的产品名称 if kernelType == 'winnt': try: path = glob.glob( .转载 2020-09-13 21:50:02 · 1061 阅读 · 0 评论 -
pyqt下QFileSystemModel指定目录,文件过滤
pyqt下QFileSystemModel指定目录,文件过滤self.sample_data = QListView()self.Dirmodel = QFileSystemModel()self.Dirmodel.setRootPath('c:/')self.Dirmodel.setNameFilterDisables(False)#过滤掉的灰色文件不显示self.Dirmodel.setNameFilters(['*.csv'])#表示只显示.csv文件self.sample_data.原创 2020-09-08 23:05:01 · 2792 阅读 · 1 评论 -
python用np.where遍历图像像素(更快的遍历)
python np.where遍历图像像素传统for循环对于大量图片访问较慢。如何使用np.where()来访问像素 并操作呢?实例:读一个灰度图,得到所有满足条件(灰度=10)像素点坐标,并存放到列表使用for循环嵌套遍历 img=cv2.imread("./db/image_cut/image_cut2.bmp",0)#第二个参数为0代表以灰度图的方式读入 height = len(img) width = len(img[0]) listx=[] listy=[]原创 2020-09-02 19:48:42 · 12767 阅读 · 6 评论 -
python五种拷贝方法列表
a = [[10], 20] b = a[:] c = list(a) d = a * 1 e = copy.copy(a) f = copy.deepcopy(a) g = a a.append(21) a[0].append(11) print(id(a), a) print(id(b), b) print(id(c), c) print(id(d), d) print(id(e), e)...转载 2020-09-02 17:02:54 · 197 阅读 · 0 评论 -
#numpy数组合并,两个数组合并为一个
按照行合并方法有几种append用法和列表一样,不用在意参数里是不是有空列表(用列表代替一个参数),其他几个好像都不可这样 a = [] b = np.arange(5) print(a) print(b) d = np.append(a,b) print(d)---------输出----[][0 1 2 3 4][0. 1. 2. 3. 4.]columc_np.c_是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等 #例一原创 2020-08-28 18:30:30 · 7634 阅读 · 0 评论 -
python 向c语言程序传递数组作为参数
python的for循环效率极低,计算速度也慢,比c/c++就慢多了,就a[i]+a[i+1]*256这个公式循环3万词都得接近700ms,不会其他办法,只有放在c里计算然后返回结果了下面的代码给个10个值的demo。(博主遇到的问题用了其他方法解决)c语言中代码,编译成Ctype.dll了float *trans_image_test(int raw_data[]){ static float image_8bit[10]; for (int j = 0; j<10; j = j + 2原创 2020-08-27 21:44:09 · 1925 阅读 · 0 评论 -
pyqt5 图片旋转
pyqt5已经不支持pyqt4中的QMatrix()类了,可以使用QTransform()#pyqt4martix =QMatrix() martix.rotate(90)#pyqt5transform = QTransform()transform.rotate(-90) image=image.transformed(transform);原创 2020-08-26 21:45:23 · 1762 阅读 · 0 评论 -
python用不了time模块
错误可能是下面这种TypeError: ‘module’ object is not callable‘builtin_function_or_method’ object has no attribute ‘sleep’有时是调用了同一个模块两次,from time import *import time这样就导致了同名函数与方法冲突。解决方案1 不推荐from time import *import time as ti #改个名字解决方案2 推荐import time调用时原创 2020-08-23 15:42:58 · 4070 阅读 · 0 评论 -
封装动态库,python取C库返回int数组指针指向的数据
dll中代码,C语言int* get_image8(SI_H* g_hDevice){clock_t start, end;static int image_8bit[143360]; //此处应该定义局部变量为静态变量 ,不然清除栈区就变成垃圾了//不初始化为static有时候也能用,但是我觉得不太安全,毕竟static是放在内存里全局变量一起的······部分初始化代码 start = clock();//和下面的end配合得到代码块时间花销 for (int n = 0; n <原创 2020-08-21 16:28:31 · 1669 阅读 · 1 评论 -
python下字节流数据转化为numpy数组
python下字节流数据转化为numpy数组python下字节流数据不太方便处理,一般转为numpy数组。以下代码的目的是将相邻两个字节的值求和(16位图)。数据数据原型,相机,网页,图片,串口都可能用到这种数据这里用到的数据长度是3万足有b'\xd7\x00\xd8\x00\xda\x00\xd9\x00\xd8\x00······'方法一通过.raw获得int型值,然后将两个位的数据加起来 begin = time() data = [] for i in range(原创 2020-08-20 21:50:46 · 5817 阅读 · 0 评论 -
create_string_buffer/Ctypes传参缓冲区地址/数组
create_string_bufferPython的string是不可修改的,所以不能传递string到一个 C/C++函数去改变它的内容,所以需要使用create_string_buffer再python里通过ctypes给指针类型的对象c_char_p,c_wchar_p 和c_void_p 等赋值时,将改变它们所指向的内存地址,这和c/c++大不相同,c/c++是修改它们所指向的内存区域的内容,这是因为python的byte对象是不可以修改的.如果你需要可改变的内存块,ctypes提供了 cre原创 2020-08-17 21:08:31 · 9420 阅读 · 0 评论 -
C语言DLL封装DLL,嵌套封装DLL
C语言DLL封装DLL,嵌套封装DLLctypes没能解决c_int类型会变成c_long类型这个问题。所以调库失败,有大手子可以教教我 x = c_int(0) x.value=1 print("type(x) is "+str(type(x)))type(x) is <class 'ctypes.c_long'>经过大佬的建议,重新封装原有的库,再嵌套一个DLL库,并再c环境里转换类型目前有的文件,还挺多SI_errors.hSI_sensor.hS原创 2020-08-15 22:35:04 · 1155 阅读 · 0 评论 -
pyqt(python)下导入opencv
明确要安装的东西在python下使用的opencv库我们一般称CV2,基于对象,cv应该是基于过程,像C语言那样。要想在pyqt里使用opencv,必须安装opencv-python的库,要和自己的python版本对应。本机环境:vscode下的虚拟环境(相对来说多做一步,复制文件而已)pyqt5python3.6.5所以我需要下载支持cp36的opencv包(cp36值得就是python3.6),查看对应版本的话去这个网址.然后顺便去下载一个whl文件。后面安装,这里有个百度云链接 提取码:原创 2020-08-13 21:54:59 · 965 阅读 · 0 评论 -
python调用c语言的库(动态库DLL)
@真开心啊,聚精会神找一天错误没找到,看个视频摸摸鱼就找到了首先要明确的怎么导入项目所需,需要使用pyqt写界面,然后里有涉及电机和摄像头的调用,底层驱动是c语言写好了,并导出了动态库dll文件。导入方法可以使用ctypes和cffi方法导入,不过好像资料都不多我用的是ctypes在python代码的头部导入库import ctypesfrom ctypes import *AMC = ctypes.cdll.LoadLibrarylib_amc = AMC("./driver/amc原创 2020-08-12 22:21:47 · 1348 阅读 · 0 评论 -
pyqt显示圆形图片
用到了QPixmap,QPainter情景需要,我是在一个QGroupBox中放入了一个QLabel,然后在QLabel上面显示了一个圆形的图片 def _plain_pic(self): groupBox = QGroupBox() groupBox.setFixedWidth(1920) groupBox.setFixedHeight(945) col_2 = QHBoxLayout() ico = QLabel(原创 2020-08-10 18:57:20 · 1626 阅读 · 0 评论 -
pyqt下使用pyqtchart(pip安装那些事)
pyqt安装完其实是没有pyqtchart的,需要另外安装pyqt和pyqtchart是一家公司的,所以版本也是对应的。下面的方法是默认安装最新版的。如果网速不行或者安装不上可以参考我另一篇换源。pip3 install PyQtChart查看自己pyqt版本,不需要可以跳过from PyQt5.QtWidgets import QApplication, QWidgetfrom PyQt5.QtCore import QT_VERSION_STRfrom PyQt5.Qt import PY原创 2020-08-08 13:52:20 · 8710 阅读 · 2 评论 -
pyqt下QSlider()和QSpinBox()互相改变
初始化self.splider = QSlider(Qt.Horizontal)#滑块self.splider.setMinimum(20)#最小值self.splider.setMaximum(900)#最大值self.splider.setSingleStep(10)#步长self.splider.setTickPosition(QSlider.TicksAbove)#设置刻度位置,在上方self.splider.setTickInterval(5)#设置刻度间隔self.splider.原创 2020-08-07 20:16:25 · 1050 阅读 · 1 评论 -
支持向量机SVM和最小二乘支持向量机LSSVM
SVM在解决小样本、非线性及高维模式识别问题中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中目标找到一个超平面,使得它能够尽可能多的将两类数据点正确的分开,同时使分开的两类数据点距离分类面最远。超平面SVM考虑寻找一个满足分类要求的分割平面(超平面),并使训练集中的点距离该分割平面尽可能地远,即寻找一个分割平面,使其两侧的空白区域(margin)最大。超平面是从n维到n-1维空间的一个映射子控空间解决方案解决方法:构造一个在约束条件下的优化问题,具体的说是一个约束二次规划问原创 2020-08-04 21:12:46 · 6805 阅读 · 0 评论 -
python画图各种函数用法
np.linespace生成指定范围内指定个数的一维数组def linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None):在指定的间隔[“start”,“stop”]内均匀地返回数字。返回“num”个等间距的样本endpoint如果为"Ture",“stop"是最后一个值,如果为"False”,生成的数组不会包含"stop"值retstep如果为"Ture",会返回样本之间的间隙>>> np.原创 2020-08-04 17:15:31 · 1669 阅读 · 0 评论 -
jupyter保存.ipynb文件为.py
安装,打开,会顺便打开一个网页上传.ipynb文件点一下文件新页面可以看整个文件,还可以file->download as py原创 2020-08-04 14:14:25 · 4772 阅读 · 0 评论 -
windows下的pyqt5的安装并测试
安装要装的东西python肯定装了,那pip也顺便装了如果没有改pip源的可以改下,之前的速度太慢了我用的豆瓣源,然后得装pyqt5(本来还需要装sip的,但是装pyqt5的时候回自动帮你装sip,而且版本匹配)PyQt5-toolspip3 install PyQt5pip3 install PyQt5-tools#豆瓣源下载pip3 install pyqt5 -i http://pypi.douban.com/simple --trusted-host=pypi.douban.c原创 2020-08-03 20:21:58 · 373 阅读 · 0 评论 -
py日常问题( ‘rb‘ ,‘wb‘的区别,转函数定义,KFold)
python中open ‘r’,’w’, ‘rb’ ,'wb’的区别“r” 以读方式打开,只能读文件 , 如果文件不存在,会发生异常“w” 以写方式打开,只能写文件, 如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件“rb” 以二进制读方式打开,只能读文件 , 如果文件不存在,会发生异常“wb” 以二进制写方式打开,只能写文件, 如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件KFold交叉验证在机器学习建模过程中,通行的做法通常是将数据分为训练集和测试集。测转载 2020-08-02 22:25:30 · 1185 阅读 · 0 评论 -
python常用的模块
python常用的模块osos模块就是对操作系统进行操作,使用该模块必须先导入模块os.loadtxt() 加载文件os.remove() 删除文件 os.unlink() 删除文件 os.rename() 重命名文件 os.listdir() 列出指定目录下所有文件 os.chdir() 改变当前工作目录os.getcwd() 获取当前文件路径os.mkdir() 新建目录os.rmdir() 删除空目录(删除非空目录, 使用shutil.rmtree())os.makedirs(转载 2020-08-02 22:23:04 · 197 阅读 · 0 评论 -
pycharm调用工程目录下子目录模块
原创 2020-08-02 10:49:15 · 657 阅读 · 0 评论 -
ubuntu安装pyqt找不到siplib
需要装啥pyqtsipqt安装先装qt,装依赖库,装sip,再装pyqt依赖库sudo apt-get install build-essentialsudo apt-get install python-devsudo apt-add-repository ppa:ubuntu-sdk-team/ppasudo apt-get updatesudo apt-get install qtdeclarative5-dev题上报错就是因为用Py3,而上面依赖库的第二个应该改成sudo原创 2020-08-02 09:12:50 · 287 阅读 · 0 评论 -
回归,分类,头疼,机器学习
回归回归定义回归,指研究一组随机变量(Y1 ,Y2 ,…,Yi)和另一组(X1,X2,…,Xk)变量之间关系的统计分析方法,回归通常是对真实关系的一种逼近预测,一般决定系数R平方来评估模型的好坏回归方法线性回归,顾名思义很简单,即在已有数据集上通过构建一个线性的模型来拟合该数据集特征向量的各个分量之间的关系,对于需要预测结果的新数据,我们利用已经拟合好的线性模型来预测其结果。关于线性回归的方法,现在使用得比较广泛的就是梯度下降和最小二乘法。非线性回归 线性模型无法很好的拟合目标数据曲线,这就原创 2020-08-01 20:55:39 · 211 阅读 · 0 评论 -
偏最小二乘回归
偏最小二乘回归不妨假设来自两种媒体的一组训练样本对的原始特征矩阵为X和Y,则CCA只是以映射后特征相关性最大为原则把X和Y分别映射为X1和Y1,而在X(Y)映射到X1(Y1)的过程中很可能会丢失原始特征矩阵X(Y)中的一些信息。此外,CCA只是寻找投影后的X1和Y1的关系,而不能通过该关系还原出X和Y。 为了解决上面提到的CCA算法的一些缺点,可以使用PLSR(Partial Least Squares Regression,最小二乘回归)算法。PLSR是一种多因变量Y对多自变量X的回归建模方法,该算转载 2020-08-01 20:36:02 · 464 阅读 · 0 评论 -
python一周搞_入门笔记1
写在前面,我不是一个勤奋的人,但是我有勤奋的想法。并希望可以坚持看python的documentation。一、平台windows10+pycharm+IDLEpython版本 python3.7.4二、基础语法2.1输入输出input输入print打印2.2缩进python不需要大括号来表示从属关系,而是使用tab缩进来表示2.3注释...原创 2019-07-11 13:41:25 · 229 阅读 · 0 评论 -
python3.6下的图片显示、改格式,包括Pillow库的安装
一、说在前面Python有着各种各样的库,图像处理也是一样,因为毕设有需要,故从头学起。本文需要的环境:windows Pycharm或者IDLE pillow库关于python的安装就不说了,Windows和Linux下都 比较容易。我是在windows下使用,直接下的PyCharm,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。分为两个版本,一个社区版...原创 2019-04-22 17:44:25 · 1132 阅读 · 0 评论