自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 pandas基础绘图函数

Series和DataFrame都有一个用于生成各类图表的plot方法。默认情况下,它们所生成的是线形图。matplotlib的默认字体不是中文,所以不能显示中文解决中文字体下,负号无法正常显示的问题。

2022-09-11 18:45:53 2307 1

原创 Hive SQL优化

Hive SQL优化案例一:1.1 将要执行的查询(执行了 1个多小时才出结果):SELECT dt as DATA_DATE,STRATEGY,AB_GROUP,SOURCE, count(distinct case when lower(event) not like '%push%' and event!='corner_mark_show' then udid else null end) as DAU, count(case when event='client_show'

2021-07-27 10:56:01 1288

原创 sql行转列与列转行

给定如下模拟数据集,这也是SQL领域经典的学生成绩表问题。两张期望的数据表分别如下:1)长表:scoreLong2)宽表:scoreWide考察的问题就是通过SQL语句实现在这两种形态间转换,其中长表转为宽表即行转列,宽表转为长表即列转行。01 行转列:sum+if在行转列中,经典的解决方案是条件聚合,即sum+if组合。其基本的思路是这样的:在长表的数据组织结构中,同一uid对应了多行,即每门课程一条记录,对应一组分数,而在宽表中需要将其变成同一uid下仅对应一行在长表中,仅有一.

2021-07-27 10:54:51 912

原创 ABTest面试题

AB测试常见的面试题1、第一类错误vs第二类错误面试官问:你怎么理解AB测试中的第一、二类错误?第一类错误和第二类错误,AB测试中最常提到的两个概念,前面也提到过,也是统计学中比较容易搞混的两个概念。不好理解的话,还是举个栗子,在互联网产品案例中,第一类错误代表的是一个功能的改动,本来不能给我们带来任何收益,但是我们却误认为它能够给我们带来收益。同样,第二类错误代表的是本来是一个好的产品,它本来可以给我们带来收益,但是由于我们统计的误差,导致我们误认为它并不能给我们带来收益。往往在实际的工作中,第

2021-07-27 10:52:24 2745 2

原创 ABTest

ABtest原理及简介什么是AB测试?AB测试来源于假设检验,我们现在有两个随机均匀的样本组A,B,对其中组A做出某种改动,实验结束后分析两组用户行为数据,通过显著性检验,半段这个改动对于我们所关注的核心指标是否有显著的影响。原理:ABtest其实就是随机均匀样本组的对照实验。AB测试的一般流程实验改动点确认一般在开始实验之前,首先需要和相关的产品或者项目经理确定这个实验要验证的改动点。核心指标确定确认改动点之后,数据分析师需要设计实验中所需要去观测的一些核心指标,比如点击率

2021-07-27 10:51:16 2618

原创 安装pyenv

pyenvpyenv是专门用来管理系统上的多个python环境. 它允许我们在系统中安装多个版本的python并且可以在多个版本中切换.​ 安装git: yum install git -y安装pyenvgit clone https://github.com/pyenv/pyenv.git ~/.pyenv修改环境变量:# bashecho 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profileecho 'export

2021-05-05 22:13:36 129

原创 机器学习特征工程

特征工程1. 特征缩放from sklearn.preprocessing import StandardScaler # 标准化from sklearn.preprocession import MinMaxScaler # 正则化from sklearn.preprocession import PolynomialFeatures # 用于多项式回归2. 特征选择随机森林计算特征的重要性from sklearn.ensemble import RandomForestClas

2021-03-27 11:53:50 126

原创 机器学习模型常见评估指标

聚类评估指标——轮廓系数s(i)=b(i)−a(i)max(a(i),b(i))s(i) = \frac{b(i)-a(i)}{max(a(i),b(i))}s(i)=max(a(i),b(i))b(i)−a(i)​计算样本i到同簇其他样本的平均距离ai。ai 越小,说明样本i越应该被聚类到该簇。将ai 称为样本i的簇内不相似度。计算样本i到其他某簇Cj 的所有样本的平均距离bij,称为样本i与簇Cj 的不相似度。定义为样本i的簇间不相似度:bi =min{bi1, bi2, …, bik}

2021-03-27 11:52:25 306

原创 机器学习常用算法

1.Knn原理: 计算待聚类样本到每个已分类样本的距离,通过降序排序,取前K个投票决定属于哪一类。优点:精度高、对异常值不敏感、不用假设缺点:时间复杂度高、空间复杂度高适用数据范围:数值型和标称型计算距离的两种方式:p=1 曼哈顿距离,p=2 欧式距离导包from sklearn.neighbors import KNeighborsClassifierknn = KNeighborsClassifier()knn.fit()knn.predict()knn.score()K

2021-03-27 11:50:33 178

原创 常见回归评估指标

1 . 解释方差分(explained_variance_score)explained_variance_score:解释方差分,这个指标用来衡量我们模型对数据集波动的解释程度,如果取值为1时,模型就完美,越小效果就越差.explained_variance(y,y^)=1−Var{y−y^}Var{y}explained\_variance(y,\hat{y}) = 1 - \frac{Var\{y - \hat{y}\}}{Var\{y\}}explained_variance(y,y^​)=1−

2021-03-25 18:46:54 4939

原创 matplotlib

一. 图像灰度处理最大值法: 使转化后的R, G, B的值等于转化前3个值中最大的一个, 即:R=G=B=max(R;G;B)R = G = B = max(R ; G; B)R=G=B=max(R;G;B)这种转化的灰度亮度很高平均值法: 是转化后的R, G, B的值为转化前的R, G, B的平均值。即:R=G=B=(R+G+B)/3R = G = B = (R + G + B)/3R=G=B=(R+G+B)/3这种方法产生的灰度图像比较柔和加权平均值法: 按一定的

2021-03-21 15:58:57 429

原创 手动实现逻辑回归

手动实现算法的三个步骤1.定义预测函数.sigmoidg(z)=11+e−zg(z) = \frac{1}{1+e^{-z}}g(z)=1+e−z1​2.定义损失函数(目标)函数3.使用梯度下降求损失函数最小时的系数import numpy as npimport pandas as pdimport matplotlib.pyplot as pltdef sigmoid(W,B): linear = np.dot(X,W) + B return 1/ (1 + np

2021-03-20 17:50:54 629

原创 手动实现线性回归

手动实现算法的步骤.找到预测函数. y = wx + b /θX找到目标函数(损失函数). 最小二乘法.12m∑i=1m(yi−y^)\frac{1}{2m}\sum_{i=1}^m(y^i - \hat{y})2m1​i=1∑m​(yi−y^​)使用梯度下降找到损失函数取的最小值的时候对应的系数.import numpy as npimport pandas as pdimport matplotlib.pyplot as pltx = np.linspace(0,10,20)

2021-03-20 17:32:54 189

原创 手动实现梯度下降算法代码

import numpy as npimport pandas as pdimport matplotlib.pyplot as plt# 画出抛物线f = lambda x:(x-2.5)**2 + 5x = np.linspace(-10,15,100)plt.figure(figsize=(8,10))plt.plot(x,[f(i) for i in x],c='r')# 梯度下降不是为了求目标函数的最小值,而是为了求目标函数最小是对应的系数# 对x求导dx = lambda

2021-03-20 17:13:53 437

原创 pandas数据加载

pandas提供了一些用于将表格型数据读取为DataFrame对象的函数,期中read_csv和read_table这两个使用最多使用read_table读取# 会报错pd.read_csv('./data/SMSSpamCollection')使用read_table读取pd.read_table('./data/SMSSpamCollection',header=None,sep='\t')总之,不能用pd.read_csv,pd.read_excel读的都可以用pd.read_

2021-03-13 14:40:01 173

原创 pandas的拼接操作

pandas的拼接分为两种:级联:pd.concat, pd.append合并:pd.merge1. 使用pd.concat()级联def make_df(index,cols): df = pd.DataFrame({col:[col + str(i) for i in index]for col in cols}) df.index = index return dfdf1 = make_df([1,2,3,4,5,6],list('ABCDEF'))df2 =

2021-03-13 14:28:28 2497

原创 pandas数据处理

1.删除重复元素# 自动生成dataframe的函数def make_df(index,cols): df = pd.DataFrame({col:[col + str(i) for i in index]for col in cols}) df.index = index return dfdf = make_df([1,2,3,4],list('ABCD'))df.iloc[0]=df.iloc[1]df使用duplicated()函数检测重复的行,返回元素为布

2021-03-13 13:42:40 337

原创 pandas层次化索引

1.创建多层索引1) 隐式构造最常见的方法是给DataFrame构造函数的index参数传递两个或更多的数组Series也可以创建多层索引ndex = [[‘一班’,‘一班’,‘一班’,‘二班’,‘二班’,‘二班’,],[‘张三’,‘李四’,‘王五’,‘赵六’,‘田七’,‘孙八’]]data = np.random.randint(80,150,size=(6,))s = pd.Series(data=data,index=index)sindex = [['一班','一班','一班

2021-03-13 12:55:04 539

原创 pandas处理丢失数据

缺失数据的处理有两种丢失数据:Nonenp.nan(NaN)1. NoneNone是Python自带的,其类型为python object。因此,None不能参与到任何计算中。object类型的运算要比int类型的运算慢得多计算不同数据类型求和时间%timeit np.arange(1e5,dtype=xxx).sum()2. np.nan(NaN)np.nan是浮点类型,能参与到计算中。但计算的结果总是NaN但可以使用np.nan*()函数来计算nan,此时视nan为0。n =

2021-03-13 12:30:39 131

原创 pandas基础

pandas的数据结构1.SeriesSeries是一种类似于一维数组的对象,由下面两个部分组成:values:一组数据(ndarray类型)index:相关的数据索引标签1) Series的创建两种创建方式:(1) 由列表或numpy数组创建默认索引为0到N-1的整数型索引l = [1,2,3,4,5]s = pd.Series(data=l)ss = pd.Series(np.random.randint(1,10,size=5))s还可以通过设置index参数指定索引

2021-03-13 11:37:46 127

原创 numpy基础

例2: a = np.arange(3).reshape((3, 1)) b = np.arange(3) 求a+b。4个必记参数: ndim:维度、 shape:形状(各维度的长度)、size:总长度、dtype:元素类型。例1: m = np.ones((2, 3)) a = np.arange(3) 求m+a。将数据反转, 例如: [1, 2, 3]—>[3, 2, 1]排序方法: 冒泡, 快速, 选择,插入,希尔,水桶,归并…参数为列表: [1, 4, 2, 5, 3]routines常规方法。..

2021-03-13 11:13:13 236

原创 ipython的使用

一、启动程序执行以下命令:jupyter notebook[NotebookApp] Serving notebooks from local directory: /home/nanfengpo[NotebookApp] 0 active kernels[NotebookApp] The IPython Notebook is running at: http://localhost:8888/[NotebookApp] Use Control-C to stop this server

2021-03-13 10:02:08 140

原创 Windows中虚拟环境的使用

1.安装virtualenvpip install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple2.安装虚拟环境进入到你想安装虚拟环境的目录, 进入到cmd黑窗口. 执行以下命令产生一个新的虚拟环境.virtualenv <虚拟环境名字>例如 :virtualenv .envs3.使用虚拟环境进入虚拟环境的scripts目录, 在这个目录下进入黑窗口. 执行activate激活虚拟环境.cd .envs/s

2021-03-13 09:43:52 259

原创 Git的使用

git在本地操作的流程进入到项目的根目录, 然后使用 git init 命令 初始化整个项目开始开发每一个小功能, 在每一小功能开发完成之后, 需要先提交到 暂存区, 命令git add . : 点 表示 所有 更改的 文件git add a.txt : 只提交 a.txt 文件如果 想把 修改的 文件 从 暂存区 撤销, 那么 可以使用 git status 这个命令 查看 系统给你的提示, 会提示你, 撤销的命令是git reset HEAD a.txt如果 暂存

2021-03-06 12:33:01 106

原创 服务器中上传本地虚拟环境的项目

收集 本地项目 虚拟环境中 的 所有的 第三方包注意:要在虚拟环境中执行命令, pip freeze > requirements.txt, 把 requirements.txt 放在 项目的 根目录把 本地的项目 上传 到 服务器中在 服务器中 创建一个新的 虚拟环境命令: mkvirtualenv demo -p python解析器的路径进入到 demo 虚拟环境中, 在进入到 项目的根目录, 然后执行命令 pip install -r requirements.txt.

2021-03-06 11:51:34 528

原创 Linux安装Redis

源码安装redis安装$ wget https://download.redis.io/releases/redis-6.2.1.tar.gz$ tar xzf redis-6.2.1.tar.gz$ cd redis-6.2.1$ make开启服务的命令: redis-server如果没有把 redis-server 加入到 环境变量路径, 必须 进入 到 redis-6.2.1/src, 执行 ./redis-server全局使用 redis-server , 需要同过

2021-03-06 11:47:00 107

原创 Linux定时执行任务

定时执行任务Linux定时任务:contrabubuntu判断cron服务有没有启动,命令:ps -ef | grep cron启动命令:sudo service cron start关闭命令:sudo service cron stop重启命令:sudo service cron restart重新载入配置文件:sudo service cron reloadcentosps -ef|grep crond启动: systemctl start crond关闭: sys

2021-03-06 11:46:23 432

原创 Linux源码安装Nginx

Nginx的安装和配置Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。在后续我们学习完Web框架以后,会教大家怎样将一个web应用程序部署到Nginx服务器上,这里我们只对Nginx做一个简单的了解。使用源码安装软件我们知道,在Linux平台里,我们可以下载一个rpm文件进行离线安装,也可以使用yum install 在线

2021-03-06 11:21:00 168

原创 Linux配置虚拟环境

Windows虚拟环境1.1 virtualenv的概述virtualenv是用来创建Python的虚拟环境的库,虚拟环境能够独立于真实环境存在,并且可以同时有多个互相独立的Python虚拟环境,每个虚拟环境都可以营造一个干净的开发环境,对于项目的依赖、版本的控制有着非常重要的作用。虚拟环境有什么意义? 如果我们要同时开发多个应用程序,应用A需要Django1.11,而应用B需要Django1.8怎么办? 这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。 virtu

2021-03-06 11:11:58 692

原创 Linux系统管理

Linux命令-系统管理1>查看当前日历:calcal命令用于查看当前日历,-y显示整年日历:cal#查看当前月份的日历cal -y 2019#查看2019整年的日历2>显示或设置时间:date设置时间格式(需要管理员权限):date [MMDDhhmm[[CC]YY][.ss]] +formatCC为年前两位yy为年的后两位,前两位的mm为月,后两位的mm为分钟,dd为天,hh为小时,ss为秒。如: date 010203042022.55。#####3>查看进

2021-03-06 10:21:56 98

原创 Linux用户、权限管理

Linux命令-用户、权限管理用户是Unix/Linux系统工作中重要的一环,用户管理包括用户与组账号的管理。在Unix/Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限。Unix/Linux系统中的root账号通常用于系统的维护和管理,它对Unix/Linux操作系统的所有具有不受限制的访问权限。在Unix/Linux安装的过程中,系统会自动创建许多用户账号,而这些默认的用户就称为“标准用户”。在大多数版本的Unix/Linux

2021-03-05 23:44:44 307

原创 二分法查找

注意: 二分法查找一定是有序的递归的二分法查找def dg_find(a, item): # 终止条件,当列表的长度为0,表示没有找到元素不再递归 if len(a) == 0: return False # 找中间位置 mid = len(a)//2 # 判断中间位置是否是要查找的值,如果是,返回True if a[mid] == item: return True # 中间值大于item, 在中间值左边的数据继

2021-02-27 18:32:50 78

原创 二叉树

二叉树二叉树的基本概念二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)二叉树的性质(特性)性质1: 在二叉树的第i层上至多有2^(i-1)个结点(i>0)性质2: 深度为k的二叉树至多有2^k - 1个结点(k>0)性质3: 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;性质4: 具有n个结点的完全二叉树的深度必为 log2(n+1)性质5: 对完全二叉

2021-02-27 18:24:31 102

原创 双向链表

双向链表一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。操作is_empty() 链表是否为空length() 链表长度travel() 遍历链表add(item) 链表头部添加append(item) 链表尾部添加insert(pos, item) 指定位置添加remove(item) 删除节点search(item) 查找节点是否存在实现由于单

2021-02-27 17:16:54 83

原创 单向循环链表

单向循环链表单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。操作is_empty() 判断链表是否为空length() 返回链表的长度travel() 遍历add(item) 在头部添加一个节点append(item) 在尾部添加一个节点insert(pos, item) 在指定位置pos添加节点remove(item) 删除一个节点search(item) 查找节点是否存在实现# 创建节点类class Node: def

2021-02-27 16:20:20 144

原创 单向链表

单向链表单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。表元素域elem用来存放具体的数据。链接域next用来存放下一个节点的位置(python中的标识)变量p指向链表的头节点(首节点)的位置,从p出发能找到表中的任意节点。节点实现class SingleNode(): # 初始化方法 def __init__(self, item): # item:存放数

2021-02-27 14:12:26 320

原创 Linux文件系统

运行 runlevel 可以查看当前系统的运行级别输入: clear 或者 ctrl + l ,表示清屏pwd命令: 显示当前的目录路径默认比较重要的目录/bin: 存放的是 系统的命令,比如 cd,ls…/etc: 存放的是项目的配置文件, 比如mysql的 配置文件 my.cnf/home如果是超级用户root,那么root用户进入系统的默认路径是 /root如果是普通用户,那么/home目录下面会创建一个和用户名称一样的目录,该用户进入系统的默认路径就是 当前目

2021-02-27 10:01:26 302

原创 回归与度量

回归与度量什么是回归​ 回归用于预测输入变量和输出变量之间的关系,当输入变量发生变化的时候,输出变量也随之发生变化。回归模型是输入到输出的一种映射函数。回归问题等价于函数拟合:选择一条函数曲线使其尽可能拟合当前数据的变化趋势,并能够对未来趋势作出预测函数拟合问题问题描述​ 许多工程问题需根据若干实验数据找到两个变量间函数关系的近似表达式,该表达式称为经验公式。根据少量实现数据找到经验数据的过程称为函数拟合。​ 例: 为了测量刀具的磨损速度,我们做以下实验:持续对刀具做磨损测试,每隔一个小时记录刀

2021-02-01 12:38:01 356

原创 朴素贝叶斯拼写检查

使用每个词作为特征并观察它们是否出现,这样得到的特征数目会有多少呢?针对的是哪一种人类语言呢?当然不止一种语言。据估计,仅在英语中,单词的总数就有500 000①之多。为了能进行英文阅读,估计需要掌握数千单词。朴素贝叶斯的一般过程(1) 收集数据:可以使用任何方法。本章使用RSS源。(2) 准备数据:需要数值型或者布尔型数据。(3) 分析数据:有大量特征时,绘制特征作用不大,此时使用直方图效果更好。(4) 训练算法:计算不同的独立特征的条件概率。(5) 测试算法:计算错误率。(6) 使用算法:

2021-01-22 15:09:18 406 1

原创 Knn算法

工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。流程k-近邻算法的一般流程(1) 收集数据:可以使用任何方法。(2

2021-01-21 13:39:48 141

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除