<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Chaser_lim1024]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/li_19186535821</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; li_19186535821]]></copyright><item><title><![CDATA[pandas基础绘图函数]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/126807854</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/126807854</guid><author>li_19186535821</author><pubDate>Sun, 11 Sep 2022 18:45:53 +0800</pubDate><description><![CDATA[Series和DataFrame都有一个用于生成各类图表的plot方法。默认情况下，它们所生成的是线形图。matplotlib的默认字体不是中文，所以不能显示中文解决中文字体下，负号无法正常显示的问题。]]></description><category></category></item><item><title><![CDATA[Hive SQL优化]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/119138601</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/119138601</guid><author>li_19186535821</author><pubDate>Tue, 27 Jul 2021 10:56:01 +0800</pubDate><description><![CDATA[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' ]]></description><category></category></item><item><title><![CDATA[sql行转列与列转行]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/119138473</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/119138473</guid><author>li_19186535821</author><pubDate>Tue, 27 Jul 2021 10:54:51 +0800</pubDate><description><![CDATA[给定如下模拟数据集，这也是SQL领域经典的学生成绩表问题。两张期望的数据表分别如下：
1）长表：

scoreLong
2）宽表：

scoreWide
考察的问题就是通过SQL语句实现在这两种形态间转换，其中长表转为宽表即行转列，宽表转为长表即列转行。
01 行转列：sum+if
在行转列中，经典的解决方案是条件聚合，即sum+if组合。其基本的思路是这样的：

在长表的数据组织结构中，同一uid对应了多行，即每门课程一条记录，对应一组分数，而在宽表中需要将其变成同一uid下仅对应一行
在长表中，仅有一.]]></description><category></category></item><item><title><![CDATA[ABTest面试题]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/119138412</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/119138412</guid><author>li_19186535821</author><pubDate>Tue, 27 Jul 2021 10:52:24 +0800</pubDate><description><![CDATA[AB测试常见的面试题
1、第一类错误vs第二类错误
面试官问：你怎么理解AB测试中的第一、二类错误？
第一类错误和第二类错误，AB测试中最常提到的两个概念，前面也提到过，也是统计学中比较容易搞混的两个概念。不好理解的话，还是举个栗子，在互联网产品案例中，第一类错误代表的是一个功能的改动，本来不能给我们带来任何收益，但是我们却误认为它能够给我们带来收益。同样，第二类错误代表的是本来是一个好的产品，它本来可以给我们带来收益，但是由于我们统计的误差，导致我们误认为它并不能给我们带来收益。

往往在实际的工作中，第]]></description><category></category></item><item><title><![CDATA[ABTest]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/119138284</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/119138284</guid><author>li_19186535821</author><pubDate>Tue, 27 Jul 2021 10:51:16 +0800</pubDate><description><![CDATA[ABtest原理及简介


什么是AB测试？
AB测试来源于假设检验，我们现在有两个随机均匀的样本组A，B，对其中组A做出某种改动，实验结束后分析两组用户行为数据，通过显著性检验，半段这个改动对于我们所关注的核心指标是否有显著的影响。
原理：ABtest其实就是随机均匀样本组的对照实验。


AB测试的一般流程


实验改动点确认
一般在开始实验之前，首先需要和相关的产品或者项目经理确定这个实验要验证的改动点。


核心指标确定
确认改动点之后，数据分析师需要设计实验中所需要去观测的一些核心指标，比如点击率]]></description><category></category></item><item><title><![CDATA[安装pyenv]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/116431403</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/116431403</guid><author>li_19186535821</author><pubDate>Wed, 05 May 2021 22:13:36 +0800</pubDate><description><![CDATA[pyenv
pyenv是专门用来管理系统上的多个python环境. 它允许我们在系统中安装多个版本的python并且可以在多个版本中切换.
​	安装git: yum install git -y


安装pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv


修改环境变量:
# bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' &gt;&gt; ~/.bash_profile
echo 'export]]></description><category></category></item><item><title><![CDATA[机器学习特征工程]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/115262656</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/115262656</guid><author>li_19186535821</author><pubDate>Sat, 27 Mar 2021 11:53:50 +0800</pubDate><description><![CDATA[特征工程
1. 特征缩放
from sklearn.preprocessing import StandardScaler  # 标准化
from sklearn.preprocession import MinMaxScaler  # 正则化

from sklearn.preprocession import PolynomialFeatures # 用于多项式回归

2. 特征选择


随机森林计算特征的重要性
from sklearn.ensemble import RandomForestClas]]></description><category></category></item><item><title><![CDATA[机器学习模型常见评估指标]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/115262629</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/115262629</guid><author>li_19186535821</author><pubDate>Sat, 27 Mar 2021 11:52:25 +0800</pubDate><description><![CDATA[聚类评估指标——轮廓系数
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}

]]></description><category></category></item><item><title><![CDATA[机器学习常用算法]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/115262606</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/115262606</guid><author>li_19186535821</author><pubDate>Sat, 27 Mar 2021 11:50:33 +0800</pubDate><description><![CDATA[1.Knn
原理:  计算待聚类样本到每个已分类样本的距离，通过降序排序，取前K个投票决定属于哪一类。

优点：精度高、对异常值不敏感、不用假设
缺点：时间复杂度高、空间复杂度高
适用数据范围：数值型和标称型
计算距离的两种方式：p=1 曼哈顿距离，p=2 欧式距离

导包
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier()
knn.fit()
knn.predict()
knn.score()

K]]></description><category></category></item><item><title><![CDATA[常见回归评估指标]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/115215711</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/115215711</guid><author>li_19186535821</author><pubDate>Thu, 25 Mar 2021 18:46:54 +0800</pubDate><description><![CDATA[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−]]></description><category></category></item><item><title><![CDATA[matplotlib]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/115049054</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/115049054</guid><author>li_19186535821</author><pubDate>Sun, 21 Mar 2021 15:58:57 +0800</pubDate><description><![CDATA[一. 图像灰度处理

最大值法: 使转化后的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)/3
R = G = B = (R + G + B)/3
R=G=B=(R+G+B)/3


这种方法产生的灰度图像比较柔和


加权平均值法: 按一定的]]></description><category></category></item><item><title><![CDATA[手动实现逻辑回归]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/115031609</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/115031609</guid><author>li_19186535821</author><pubDate>Sat, 20 Mar 2021 17:50:54 +0800</pubDate><description><![CDATA[手动实现算法的三个步骤
1.定义预测函数.sigmoid
g(z)=11+e−z
g(z) = \frac{1}{1+e^{-z}}
g(z)=1+e−z1​
2.定义损失函数(目标)函数

3.使用梯度下降求损失函数最小时的系数
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

def sigmoid(W,B):
    linear = np.dot(X,W) + B
    return 1/ (1 + np]]></description><category></category></item><item><title><![CDATA[手动实现线性回归]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/115031141</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/115031141</guid><author>li_19186535821</author><pubDate>Sat, 20 Mar 2021 17:32:54 +0800</pubDate><description><![CDATA[手动实现算法的步骤.

找到预测函数. 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 np
import pandas as pd
import matplotlib.pyplot as plt

x = np.linspace(0,10,20)]]></description><category></category></item><item><title><![CDATA[手动实现梯度下降算法代码]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/115029268</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/115029268</guid><author>li_19186535821</author><pubDate>Sat, 20 Mar 2021 17:13:53 +0800</pubDate><description><![CDATA[import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 画出抛物线
f = lambda x:(x-2.5)**2 + 5
x = np.linspace(-10,15,100)
plt.figure(figsize=(8,10))
plt.plot(x,[f(i) for i in x],c='r')

# 梯度下降不是为了求目标函数的最小值,而是为了求目标函数最小是对应的系数
# 对x求导
dx = lambda]]></description><category></category></item><item><title><![CDATA[pandas数据加载]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/114746124</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/114746124</guid><author>li_19186535821</author><pubDate>Sat, 13 Mar 2021 14:40:01 +0800</pubDate><description><![CDATA[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_]]></description><category></category></item><item><title><![CDATA[pandas的拼接操作]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/114744651</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/114744651</guid><author>li_19186535821</author><pubDate>Sat, 13 Mar 2021 14:28:28 +0800</pubDate><description><![CDATA[pandas的拼接分为两种：

级联：pd.concat, pd.append
合并：pd.merge

1. 使用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 df
df1 = make_df([1,2,3,4,5,6],list('ABCDEF'))
df2 = ]]></description><category></category></item><item><title><![CDATA[pandas数据处理]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/114742434</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/114742434</guid><author>li_19186535821</author><pubDate>Sat, 13 Mar 2021 13:42:40 +0800</pubDate><description><![CDATA[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 df
df = make_df([1,2,3,4],list('ABCD'))
df.iloc[0]=df.iloc[1]
df



使用duplicated()函数检测重复的行，返回元素为布]]></description><category></category></item><item><title><![CDATA[pandas层次化索引]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/114740706</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/114740706</guid><author>li_19186535821</author><pubDate>Sat, 13 Mar 2021 12:55:04 +0800</pubDate><description><![CDATA[1.创建多层索引
1) 隐式构造
最常见的方法是给DataFrame构造函数的index参数传递两个或更多的数组

Series也可以创建多层索引


ndex = [[‘一班’,‘一班’,‘一班’,‘二班’,‘二班’,‘二班’,],[‘张三’,‘李四’,‘王五’,‘赵六’,‘田七’,‘孙八’]]
data = np.random.randint(80,150,size=(6,))
s = pd.Series(data=data,index=index)
s

index = [['一班','一班','一班]]></description><category></category></item><item><title><![CDATA[pandas处理丢失数据]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/114737537</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/114737537</guid><author>li_19186535821</author><pubDate>Sat, 13 Mar 2021 12:30:39 +0800</pubDate><description><![CDATA[缺失数据的处理
有两种丢失数据：

None
np.nan(NaN)

1. None
None是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 =]]></description><category></category></item><item><title><![CDATA[pandas基础]]></title><link>https://blog.youkuaiyun.com/li_19186535821/article/details/114735904</link><guid>https://blog.youkuaiyun.com/li_19186535821/article/details/114735904</guid><author>li_19186535821</author><pubDate>Sat, 13 Mar 2021 11:37:46 +0800</pubDate><description><![CDATA[pandas的数据结构
1.Series
Series是一种类似于一维数组的对象，由下面两个部分组成：

values：一组数据（ndarray类型）
index：相关的数据索引标签

1) Series的创建
两种创建方式：
(1) 由列表或numpy数组创建
默认索引为0到N-1的整数型索引
l = [1,2,3,4,5]
s = pd.Series(data=l)
s
s = pd.Series(np.random.randint(1,10,size=5))
s

还可以通过设置index参数指定索引]]></description><category></category></item></channel></rss>