统计学/数据处理/机器学习
文章平均质量分 71
FrenchOldDriver
这个作者很懒,什么都没留下…
展开
-
三种实现模型可视化的方式(print, torchinfo, tensorboard)
深度学习模型可视化原创 2023-04-13 20:12:04 · 1019 阅读 · 1 评论 -
直方图均衡化实现暗光增强
直方图均衡化,暗光增强原创 2023-04-13 16:38:36 · 664 阅读 · 0 评论 -
【图像处理笔记3】Gabor Filter的手动和调包实现
Gabor filter 作为一种很出名的纹理滤波器,可以很好的捕捉纹理信息。比如设置成(3, 3, math.pi/2, 0.5)的参数。显示的时候要用np.real取实数部分,不然画不出来。现在的Gabor由4个参数控制(Gabor还可以用过skimage 调包实现。代码实现如下, 代码里的freq就是。原创 2022-11-09 11:20:26 · 748 阅读 · 0 评论 -
python装apex遇到无文件或文件夹 error: [Errno 2] No such file or directory: ‘xxx‘的问题解决方案
会提示你某个文件或文件夹不存在,py文件的名称可能会有所不同原创 2022-08-05 15:28:46 · 1639 阅读 · 0 评论 -
【图像处理】Pyefd.elliptic_fourier_descriptors的使用方式
每一个轮廓的维度是【长度,1,2】,而elliptic_fourier_descriptors只能处理【长度,2】这样的数据,所以用np.squeeze()。图像轮廓的获取方式如上述代码,一般是先转灰度,再获取binary,再送到findContours函数中。返回的contours一般是一个四维的向量,分别表示【轮廓个数,该轮廓的轮廓点个数,1,坐标x和y】。关键的输入是contours,图像轮廓,可以通过opencv的函数实现。傅里叶描述器,通过傅里叶级数逼近的方式,去近似得到图像轮廓的表示。.....原创 2022-07-19 10:11:19 · 631 阅读 · 0 评论 -
Fuzzy C Means聚类算法python快速实现(非调包,运算速度快)
跟Kmeans算法类似,迭代过程中每次都要重新计算聚类中心,更新公式如下:ck=Σzuk(x)mxΣxuk(x)mc_k = \frac{\Sigma_zu_k(x)^mx}{\Sigma_xu_k(x)^m} ck=Σxuk(x)mΣzuk(x)mx其中u是隶属度矩阵U的元素,U的维度是(n_data, n_cluster), 即一个大小和数据长度以及聚类数量有关的矩阵,它的特点是每一行加起来为1,因为这表示概率。这里有点像softmax。然后FCM的目的是为了最小化目标函数:argmin原创 2022-06-30 14:54:42 · 1938 阅读 · 2 评论 -
Pytorch深度学习(2):图像处理入门+MNIST实战
本文将通过一个经典的Kaggle比赛:MNIST手写字识别来进行简单的图像处理入门。该Kaggle竞赛链接并且会用到很常见的CNN模型。首先导入数据,做好前期准备:import pandas as pdimport numpy as nptrain_data = pd.read_csv('./train.csv')test_data = pd.read_csv('./test.csv')简单查看一下可以发现,该数据中,训练集里是包含label的,在其数据的第一位,而测试集没有。并且他的数据原创 2022-05-24 23:02:09 · 924 阅读 · 0 评论 -
通过torch.nn.init更改模型初始化参数
比如模型如下:class Net(nn.Module): # 初始化定义网络的结构:也就是定义网络的层 def __init__(self): super(Net,self).__init__() self.layer1 = nn.Sequential( nn.Conv2d(3,6,kernel_size=5,stride=1,padding=0), # 激活函数原创 2022-05-21 14:34:12 · 793 阅读 · 0 评论 -
特征值分解,奇异值分解(SVD),线性判别分析(LDA)
文章目录特征值与特征值分解奇异值分解线性判别分析瑞利商广义瑞利商(Generalized Rayleigh Quotient)特征值与特征值分解特征值分解就是要求解Ax=λxAx=\lambda xAx=λx的问题,其中λ\lambdaλ 就是特征值,xxx就是特征向量。现在有如下矩阵A=[7238]A=\begin{bmatrix}7&2\\3&8\end{bmatrix}A=[7328]可以把原问题变换成求解(A−λ)x=0(A-\lambda)x=0(A−λ)x=0, 由原创 2022-05-03 14:58:27 · 1196 阅读 · 0 评论 -
Colab平台利用gensim包实现Word2Vec和FastText(CBOW, Skip Gram两种实现)
重复造轮子不可取,要合理学会调(tou)包(lan)!Gensim是一个可以用来进行无监督学习和自然语言处理的开源库,编写语言为Python和Cython,更多细节可以上官网查询。首先导入基本的包:import pprintimport re# For parsing our XML datafrom lxml import etree # For data processingimport nltknltk.download('punkt')from nltk.tokenize i原创 2021-03-22 16:11:21 · 1299 阅读 · 6 评论 -
论文导读: Exploring Cyberbullying and Other Toxic Behavior in Team Competition Online Games
文章链接1. Abstract&Introduction 部分1 本文主要探索Cyberbullying(网络暴力,比如:骂人,口吐芬芳,问候对方家庭成员等) 在合作竞技游戏(比如LoL英雄联盟)中的情况. 除开提供大规模,基于经验的网络不良行为的理解,这篇文章的工作内容可以用来作为构建相应的检测系统的基础,同时反对这类不良行为。2 Computer mediated communication(CMC, 计算机即时聊天)带来很多不好的行为,特别是网络暴力以及其他一些类似行为已经变得很严重(大原创 2021-03-02 23:26:14 · 492 阅读 · 0 评论 -
论文导读: Self-Supervised Knowledge Triplet Learning for Zero-shot Question Answering
该论文可直接在网上下载。1. Abstract & Introduction部分1 QA(question answering)的主要目的是generalize to unseen questions. 使得系统能够泛化到回答没有见过的问题。通俗一点的理解就是,机器可以根据自己的理解,回答一些未知问题,从而获得一定程度的”智能“。2 一个可能的问题是:annotation 会导致unintended annotator bias 无意识地标记偏见。这个其实是个很常见的套话,反正是人标记都会有b原创 2021-02-25 23:27:22 · 842 阅读 · 0 评论 -
R中dplyr包的select和filter实现横向/竖向选择
当我们平时处理csv等一系列文件时,通常希望只选择其中某几列,或者符合条件的某几行。则可以通过dplyr包中的一些函数实现。library(dplyr)table <- data.frame(cbind(c(1,2,3), c('Li','Zhang','Li'), c(11,13,15)))%>%rename(id = X1, name = X2, score = X3)假如现在我有这么一个简单的表,第一列是id,第二列是名字,第三列是分数。比如我想只选则名字这一列,则table%原创 2021-02-09 17:25:13 · 3785 阅读 · 0 评论 -
R语言基础操作(一): str_split,mutate,gather,dplyr,ggplot2
数据下载地址: votes and seats-2.csv运行环境Rstudio首先导入数据, 并且查看一些简单的信息:votes.seats <- read.csv('votes and seats-2.csv', na.strings = '–', head = TRUE, sep=',')dim(votes.seats) head(votes.seats, 10) #查看前几行row, 默认6tail(votes.seats, 8) #查看后几行names(votes.seats)原创 2021-01-19 23:22:26 · 3506 阅读 · 0 评论 -
使用pytorch+cuda实现简单二分类问题
首先我们知道二分类问题的关键是其中的sigmoid函数, sigmoid如何运作的不再赘述.先创建模型import numpy as npimport torchfrom torch import nnfrom torch.autograd import Variableimport matplotlib.pyplot as pltclass LogisticRegression(nn.Module): def __init__(self): super(Logist原创 2021-01-10 17:46:16 · 399 阅读 · 0 评论 -
最大似然估计,最大后验,正则化,范数,距离
根据贝叶斯公式有:p(θ∣S)=p(S∣θ)p(θ)p(S)p(\theta|S)=\frac{p(S|\theta)p(\theta)}{p(S)}p(θ∣S)=p(S)p(S∣θ)p(θ)其中S是data样本,p(θ)p(\theta)p(θ)是先验,p(S∣θ)p(S|\theta)p(S∣θ)是Likelihood,p(θ∣S)p(\theta|S)p(θ∣S)是后验。假设最大似然估计(Maximum Likelihood Estimation, MLE)为:p(S∣θ)=Πi=1np(y原创 2020-12-22 16:57:18 · 1333 阅读 · 1 评论 -
非负矩阵分解NMF(2): 拟牛顿法及其他方法
文章目录写在前面逆牛顿法(Quasi-Newton method)公式推导代码实现其他方法公式推导代码实现写在前面在之前的一篇文章中非负矩阵分解(1) 已经介绍了NMF的基本概念,数学基础以及代码实现,这里不再对NMF基本概念做更多讲解,建议先看完(1)再看这篇。实现非负矩阵分解主要两种方法,一个是梯度下降法,一个是乘法迭代法,乘法迭代可以看作是梯度下降的一种变形。文章(1)中使用的就是乘法迭代,而这一篇的重点则是梯度下降逆牛顿法(Quasi-Newton method)公式推导理论参考至《矩阵原创 2020-12-04 14:53:49 · 708 阅读 · 0 评论 -
Excel计算Fleiss Kappa分数
这个分数是用来评估多名评估员对于一系列观测样本的评估的一致性。Fleiss Kappa分越高,说明分歧越小,大家做出的判断都差不多,反之分数越低,分歧越大。维基百科上的分数和对应解释,一般0.8以上被认为基本完美的同意,0.6-0.8被认为大量的同意,以此类推。现在有这样一堆数据:表示有10个样本,和5种可以类别(A-E),每一行数字的总和都是14,说明有14个评估员。先进行横向比较,PiP_iPi表明的是对于第i个样本,大家的一致程度, 其计算公式是这一行(所有数据的平方和-n)/(n*(n原创 2020-11-10 14:47:45 · 6515 阅读 · 2 评论 -
非负矩阵分解NMF(1): 非调包python实现
文章目录1. 矩阵分解(Matrix Factorization):1.1 公式推导1.2 代码实现1.3 在图像数据下的效果2. 非负矩阵分解(Non-negative Matrix Factorization)2.1 迭代公式2.2 代码部分2.3 在图像数据下的效果在实现NMF之前,先看普通的MF是怎么进行的,从而可以直观地理解为什么一定要非负矩阵分解。1. 矩阵分解(Matrix Factorization):1.1 公式推导该方法由Albert Au Yeung 提供: 原文链接首先矩阵原创 2020-12-01 22:03:33 · 1771 阅读 · 1 评论 -
以不变应万变,eigen特征值就是终极奥义
文章目录写在前面特征值与马尔可夫链特征值与微分方程/高阶方程特征值与降维写在后面写在前面这几个月,随着数学和AI学习的深入,很多复杂的知识很难用浅显的语言表达出来了。但自始自终,有一些概念却是始终缠绕在脑海中,他就是特征值。由于学识浅薄,表达难免肤浅片面,但以此作为记录,希望给以后的学习提供一点帮助。在之前的文章中已经说过了一些关于特征值,PCA以及马尔可夫链的联系机器学习入门(八)主成分分析特征值与马尔可夫链当时讲了这么一个例子用来说明特征值和马尔可夫链的关系:某个城镇,每年30%的已婚女性离原创 2020-09-22 16:46:50 · 254 阅读 · 0 评论 -
davies_bouldin_score用于评估聚类模型
在之前写的一篇关于聚类分析的文章中,介绍了两种用于评价聚类模型好坏的标准,分别是elbow method和silhouette score。现在使用另外一种评分方式。davies_bouldin_score, sklearn中有这个包, 但介绍不是很多。大概意思就是这个分数越低,模型越好,最小值是0。直接用代码可视化分析一下:首先还是生成数据:from sklearn.datasets import make_moonsX, y = make_moons(200, noise=.05, rando原创 2020-05-12 22:53:00 · 5511 阅读 · 0 评论 -
使用PCA绘制高维数据
很多人在遇到高维数据的时候都会头疼,不知道怎么把他们更好地画出来,要么就是选取几列来作图,但如何选择也成了一个问题。PCA在降低维度的同时,使得数据变成更容易被画出来的低维数据。现在以sklearn中的iris数据为例。from sklearn.datasets import load_irisfrom sklearn.decomposition import PCAimport matplotlib.pyplot as pltpca = PCA(n_components=2)X, y =loa原创 2020-05-12 11:09:51 · 1340 阅读 · 0 评论 -
机器学习入门(九):非监督学习:5种聚类算法+2种评估模型
聚类算法(Clustering Algorithms)常用于进行非监督学习(unsupervised learning),即它处理的是没有事先标记分类的数据。一共介绍五种常见聚类算法:K-meansHierarchicalGMMDBSCAN(基于密度的聚类算法)基于网格Grid的聚类算法距离公式在了解聚类算法如何实现之前,需要先了解几种常见的距离计算公式,因为聚类算法会通过距离判断两...原创 2020-05-06 18:27:15 · 17615 阅读 · 1 评论 -
机器学习入门(八):主成分分析(PCA)
这两个都是机器学习中常用的方法,其主要作用是降维。因为有时候做运算的时候会遇到维度特别大的情况,如果蛮力求解会导致维度灾难。而通过降维可以有效避免这些情况的产生,同时减少运算开销。首先来看求解特征值:特征值与特征向量定义:有一个n * n的矩阵,如果存在一个非零向量xxx使得Ax=λxAx=\lambda xAx=λx,则称标量λ\lambdaλ为特征值(Eigenvalue),而x为特征向...原创 2020-04-21 00:21:02 · 1056 阅读 · 1 评论 -
使用StratifiedKFold实现交叉验证
使用sklearn包中的StratifiedKFold可以将数据按规定方式划分成任意块数,然后实现交叉验证。但这个函数本身是不能返回交叉验证的分数的。他只是切分数据。代码实现:from sklearn.datasets import load_irisfrom sklearn.model_selection import StratifiedKFoldiris=load_iris(ret...原创 2020-04-12 18:09:52 · 3998 阅读 · 0 评论 -
机器学习入门(七):多项式回归, PolynomialFeatures详解
写在前面在机器学习入门(六)中,已经通过pipeline快速使用了多项式回归。代码如下:nonLinearRegr = Pipeline([ ('poly',PolynomialFeatures(degree=2)), ('clf',LinearRegression()) ])nonLinearRegr.fit(X, y)这个方式省略了很多......原创 2020-04-11 14:15:53 · 32671 阅读 · 4 评论 -
Python数据预处理:把csv文件变成sklearn数据集,缺失值填补,数据缩放
不想看过程的直接看总结总结现在有个700x10的csv文件,第一行是数据的属性值,最后一列是类别。首先导入数据,然后把它变成ndarray。import csvimport numpy as npfrom numpy import nancsvFile = open("./breast-cancer-wisconsin.csv","r")csv_data = csv.reader(c...原创 2020-04-04 22:02:50 · 4546 阅读 · 1 评论 -
机器学习入门(六):支持向量机(SVM),支持向量回归(SVR)及pipeline的使用
关于支持向量机的理论和证明都非常多,这里主要想讲一下代码实现及各参数的含义及作用。SVM的主要目的是找到一个平面,使得支持向量离这个平面尽量的远,所以常用于分类问题,而支持向量回归(SVR)的主要目的是找到一个平面近可能离所有的点都很近,从而实现回归。1)SVM:首先看下其各项参数,详细地址见sklearn.svm一般调以下几个参数:kernel: 核,选项有’linear’ 线性核...原创 2020-03-31 15:52:02 · 4968 阅读 · 0 评论 -
机器学习入门(二):KNN分类算法和决策边界(Decision Boundary)绘制
1)KNN算法基础知识:KNN全称K Nearest Neighbor, k是指最近邻居的个数。俗话说物以类聚,人以群分,我们通常判别一个人是好是坏的方式就是看他周围是一群好人还是坏人。这个算法也是如此,假如A的周围有一堆好人,我们就认为他是个好人。即使他周围有两个坏人(干扰项),我们也不会把它当成坏人。而人与人的关系也有远近之分,计算远近,我们就需要用距离来衡量,有时候远亲不如近邻就体现...原创 2020-03-27 17:18:06 · 10022 阅读 · 0 评论 -
机器学习入门(五):集成学习Bagging,Boosting,RandomForest和GridSearchCV参数调优
这一次将结合机器学习模型和参数调优进行更加贴合实际的训练。首先简单介绍一下各种算法:一)Bagging算法:简称袋装法, 英文全称叫Bootstrap Aggregating,其实现过程是从数据样本中抽取n个数据,实现一个机器学习模型,抽取k次,每次抽取互不干扰,生成k的模型,最后将k个模型采用投票的方式获得分类结果。二)Boosting算法:2.1)AdaBoost算法:给训练集Tr...原创 2020-03-27 01:34:32 · 1837 阅读 · 0 评论 -
机器学习入门(四):决策树算法详解,代码实现及决策边界绘制
1)理论基础:熵 (entropy) 的计算:通过计算熵,从而获得信息增益(Information Gain),可判断是否通过某个属性划分子树。熵越大,数据集的纯度(purity)越小。首先还是从实际数据举例:所有数据的entropy:接下来使用第一个属性outlook作为分割数据的标准:outlook有三种结果sunny,overcast,rainy,则需要计算他们各自的熵...原创 2020-03-23 22:33:45 · 3623 阅读 · 0 评论 -
统计学/机器学习入门(三): 朴素贝叶斯Naïve Bayes及其决策边界,交叉验证
一)理论基础不做过多介绍,NB(Naïve Bayes) 可用来分类,直接上公式:P(H|E) = P(E|H) * P(H) / P(E)二)举例说明直接来个例子比较直观, 现在有这样一堆数据:我们将通过过去的天气数据来判断 今天是否适合出去玩耍,然后今天的天气是这样:这就是个很简单的0 1问题,play到底可不可以呢,于是...原创 2020-03-18 18:01:50 · 3298 阅读 · 4 评论 -
统计学/机器学习入门(一):简单的线性回归和分类问题
线性回归(Linear Regression)无论是统计学教材还是机器学习教材基本都是放在第一章讲的,所以先从这里开始学习,首先是单变量线性回归(Linear Regression with One Variable)首先导入包:import numpy as npimport matplotlib.pyplot as pltfrom sklearn.metrics import mean...原创 2020-02-22 11:08:38 · 2239 阅读 · 0 评论 -
统计学入门(零):协方差,皮尔逊系数及斯皮尔曼系数的R语言实现
前言:R语言是实践统计学和机器学习的良好工具,个人觉得相比Python比较容易学习。协方差,皮尔逊系数以及斯皮尔曼系数的具体统计学或数学意义就不在此过多描述,主要是解释其R语言代码实现,将分别使用公式的方式计算以及直接调用现有function的方式,以下是具体操作。(一)首先导入数据并绘制图像,数据是介个样子:A B C D E Y234 0.04 48 0.1 0.45 1622...原创 2020-02-17 01:44:15 · 5377 阅读 · 0 评论