python sklearn 归一化_数据分析|Python特征工程(5)

38853b5e1528ab7f758376aab647eb37.png

OX00 引言

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。

特征做不好,调参调到老。重视调参,少走弯路!

特征工程又包含了Data PreProcessing(数据预处理)、Feature Extraction(特征提取)、Feature Selection(特征选择)和Feature construction(特征构造)等子问题,而数据预处理又包括了数据清洗和特征预处理等子问题。

a2a6fd18b17e1e143f9dd060cb826445.png

OX01 标准化、归一化与正态分布化

sklearn中的IRIS(鸢尾花)数据集来对特征处理功能进行说明:

from sklearn.datasets import load_iris 
#导入IRIS数据集 
iris = load_iris() 
#特征矩阵 
iris.data 
#目标向量 
iris.targetarray([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])

在sklearn中专门的用来数据归一化的方法:StandardScaler。

from 

无量纲化使不同规格的数据转换到同一规格。常见的无量纲化方法有标准化和归一化。

1.1 归一化

最大最小【0,1】归一化

区间缩放法利用了边界值信息,将属性缩放到[0,1]。

缺点:

  • 这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义;
  • MinMaxScaler对异常值的存在非常敏感。
import numpy as np
import pandas as pd
#方法一
def autoNorm(dataSet):norm_data=(dataSet-dataSet.min(axis=0))/(dataSet.max(axis=0)-dataSet.min(axis=0))return norm_data
train_data=np.arange(16).reshape(4,4)
print(autoNorm(train_data))[[0.         0.         0.         0.        ][0.33333333 0.33333333 0.33333333 0.33333333][0.66666667 0.66666667 0.66666667 0.66666667][1.         1.         1.         1.        ]]

Python自带的【0,1】归一化

from sklearn import preprocessing
import numpy as np
# 初始化数据,每一行表示一个样本,每一列表示一个特征
x = np.array([[ 0., -3.,  1.],[ 3.,  1.,  2.],[ 0.,  1., -1.]])
# 将数据进行 [0,1] 规范化
min_max_scaler = preprocessing.MinMaxScaler()
minmax_x = min_max_scaler.fit_transform(x)
print (minmax_x)[[0.         0.         0.66666667][1.         1.         1.        ][0.         1.         0.        ]]

MaxAbs归一化

单独地缩放和转换每个特征,使得训练集中的每个特征的最大绝对值将为1.0,将属性缩放到[-1,1]。它不会移动/居中数据,因此不会破坏任何稀疏性。

77db38f14a20541491be802f6684eb30.png

缺点:

  • 这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义;
  • MaxAbsScaler与先前的缩放器不同,绝对值映射在[0,1]范围内。
    在仅有正数据时,该缩放器的行为MinMaxScaler与此类似,因此也存在大的异常值。
from 

1.2 标准化

标准化(也叫Z-score standardization,均值为0方差为1)(对列向量处理)

标准化的前提是特征值服从正态分布,标准化后,其转换成标准正态分布。

基于原始数据的均值(mean)和标准差(standarddeviation)进行数据的标准化。将A的原始值x使用z-score标准化到x’。z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。

fd444d87de4cbfc57eb603cc6562ffa5.png

优点:

Z-Score最大的优点就是简单,容易计算,Z-Score能够应用于数值型的数据,并且不受数据量级的影响,因为它本身的作用就是消除量级给分析带来的不便。

缺点:

  • 估算Z-Score需要总体的平均值与方差,但是这一值在真实的分析与挖掘中很难得到,大多数情况下是用样本的均值与标准差替代;
  • Z-Score对于数据的分布有一定的要求,正态分布是最有利于Z-Score计算的;
  • Z-Score消除了数据具有的实际意义,A的Z-Score与B的Z-Score与他们各自的分数不再有关系,因此Z-Score的结果只能用于比较数据间的结果,数据的真实意义还需要还原原值;
  • 在存在异常值时无法保证平衡的特征尺度。
def autoNorm(dataSet):norm_data=(dataSet-dataSet.mean(axis=0))/dataSet.std(axis=0)return norm_data
train_data=np.arange(16).reshape(4,4)
print(autoNorm(train_data))[[-1.34164079 -1.34164079 -1.34164079 -1.34164079][-0.4472136  -0.4472136  -0.4472136  -0.4472136 ][ 0.4472136   0.4472136   0.4472136   0.4472136 ][ 1.34164079  1.34164079  1.34164079  1.34164079]]from sklearn import preprocessing
import numpy as np
# 初始化数据
x = np.array([[ 0., -3.,  1.],[ 3.,  1.,  2.],[ 0.,  1., -1.]])
# 将数据进行 Z-Score 规范化
scaled_x = preprocessing.scale(x)
print (scaled_x)
[[-0.70710678 -1.41421356  0.26726124][ 1.41421356  0.70710678  1.06904497][-0.70710678  0.70710678 -1.33630621]]

数据标准化的原因:

  • 某些算法要求样本具有零均值和单位方差;
  • 需要消除样本不同属性具有不同量级时的影响。
  • 归一化有可能提高精度; 数量级的差异将导致量级较大的属性占据主导地位,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要);
  • 数量级的差异将导致迭代收敛速度减慢; 当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛;
  • 依赖于样本距离的算法对于数据的数量级非常敏感。

1.3 标准化与归一化对比

相同点:
它们的相同点在于都能取消由于量纲不同引起的误差;都是一种线性变换,都是对向量X按照比例压缩再进行平移。

不同点:

  • 目的不同,归一化是为了消除纲量压缩到[0,1]区间;
    标准化只是调整特征整体的分布;
  • 归一化与最大,最小值有关;
    标准化与均值,标准差有关;
  • 归一化输出在[0,1]之间;
    标准化无限制。

什么时候用归一化?什么时候用标准化?

  • 如果对输出结果范围有要求,用归一化;
  • 如果数据较为稳定,不存在极端的最大最小值,用归一化;
  • 如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响。

归一化与标准化的应用场景

  • 在分类、聚类算法中,需要使用距离来度量相似性的时候(如SVM、KNN)、或者使用PCA技术进行降维的时候,标准化(Z-score standardization)表现更好;
  • 在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用归一化方法。
    比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围;
  • 基于树的方法不需要进行特征的归一化。
    例如随机森林,bagging与boosting等方法。
    如果是基于参数的模型或者基于距离的模型,因为需要对参数或者距离进行计算,都需要进行归一化。
一般来说,建议优先使用标准化。对于输出有要求时再尝试别的方法,如归一化或者更加复杂的方法。很多方法都可以将输出范围调整到[0, 1],如果我们对于数据的分布有假设的话,更加有效的方法是使用相对应的概率密度函数来转换。
除了上面介绍的方法外,还有一些相对没这么常用的处理方法:RobustScaler、PowerTransformer、QuantileTransformer和QuantileTransformer等。

1.4 正态分布化

正态分布化 -Normalizer,将同一行数据的不同特征进行规范化,这样一个数据的不同特征具有相同的量纲

正则化的过程是将每个样本缩放到单位范数(每个样本的范数为1),如果要使用如二次型(点积)或者其它核方法计算两个样本之间的相似性这个方法会很有用。

该方法是文本分类和聚类分析中经常使用的向量空间模型(Vector Space Model)的基础。

Normalization主要思想是对每个样本计算其p-范数,然后对该样本中每个元素除以该范数,这样处理的结果是使得每个处理后样本的p-范数(l1-norm,l2-norm)等于1。

52ecb9ee058c881b764c04be2a7349a1.png
from sklearn.preprocessing import Normalizer
#归一化,返回值为归一化后的数据 
Normalizer().fit_transform(iris.data)array([[0.80377277, 0.55160877, 0.22064351, 0.0315205 ],[0.82813287, 0.50702013, 0.23660939, 0.03380134],[0.80533308, 0.54831188, 0.2227517 , 0.03426949],[0.80003025, 0.53915082, 0.26087943, 0.03478392],[0.790965  , 0.5694948 , 0.2214702 , 0.0316386 ],#normalizer  = Normalizer(norm='l2').fit(X_train)
#normalizer.transform(X_train)from sklearn.preprocessing import Normalizer 
import math 
data = np.array([[1,2],[3,4],[5,6]]).reshape(3,2) 
print(data)print (data[0][0]/math.sqrt((data[0][0])**2 + (data[0][1])**2))  # 计算第一个元素L2正则化后的值 # 规范化 
Normalizer().fit_transform(data)[[1 2][3 4][5 6]]
0.4472135954999579
Out[27]:array([[0.4472136 , 0.89442719],[0.6       , 0.8       ],[0.6401844 , 0.76822128]])
参考链接:腾讯文档

OX02 数值型特征分箱(数据离散化)

离散化是数值型特征非常重要的一个处理,其实就是要将数值型数据转化成类别型数据。连续值的取值空间可能是无穷的,为了便于表示和在模型中处理,需要对连续值特征进行离散化处理。

分箱的重要性及其优势:

  • 离散特征的增加和减少都很容易,易于模型的快速迭代;
  • 稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
  • 离散化后的特征对异常数据有很强的鲁棒性;
    比如一个特征是年龄>30是1,否则0。
    如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;
  • 对于线性模型,表达能力受限;
    单变量离散化为N个后,每个变量有单独的权重,相当于模型引入了非线性,能够提升模型表达能力,加大拟合;
  • 离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;
  • 特征离散化后,模型会更稳定;
    比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。
    当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问;
  • 特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险;
  • 可以将缺失作为独立的一类带入模型;
  • 将所有变量变换到相似的尺度上。

2.1 无监督分箱法

自定义分箱

自定义分箱,是指根据业务经验或者常识等自行设定划分的区间,然后将原始数据归类到各个区间中。

等距分箱

按照相同宽度将数据分成几等份。

import pandas as pd
df = pd.DataFrame([[22,1],[13,1],[33,1],[52,0],[16,0],[42,1],[53,1],[39,1],[26,0],[66,0]],columns=['age','Y'])
df['age_bin_2'] = pd.cut(df['age'],3)  #新增一列存储等距划分的分箱特征
display(df)
# 输出age    Y    age_bin
0    22    1    (12.947, 30.667]
1    13    1    (12.947, 30.667]
2    33    1    (30.667, 48.333]
3    52    0    (48.333, 66.0]
4    16    0    (12.947, 30.667]
5    42    1    (30.667, 48.333]
6    53    1    (48.333, 66.0]
7    39    1    (30.667, 48.333]
8    26    0    (12.947, 30.667]
9    66    0    (48.333, 66.0]

等频分箱

将数据分成几等份,每等份数据里面的个数是一样的。

import pandas as pd
df = pd.DataFrame([[22,1],[13,1],[33,1],[52,0],[16,0],[42,1],[53,1],[39,1],[26,0],[66,0]],columns=['age','Y'])
df['age_bin_1'] = pd.qcut(df['age'],3) #新增一列存储等频划分的分箱特征
display(df)
# 输出age    Y    age_bin
0    22    1    (12.999, 26.0]
1    13    1    (12.999, 26.0]
2    33    1    (26.0, 42.0]
3    52    0    (42.0, 66.0]
4    16    0    (12.999, 26.0]
5    42    1    (26.0, 42.0]
6    53    1    (42.0, 66.0]
7    39    1    (26.0, 42.0]
8    26    0    (12.999, 26.0]
9    66    0    (42.0, 66.0]

聚类分箱

基于k均值聚类的分箱:k均值聚类法将观测值聚为k类,但在聚类过程中需要保证分箱的有序性:第一个分箱中所有观测值都要小于第二个分箱中的观测值,第二个分箱中所有观测值都要小于第三个分箱中的观测值,等等。

实现步骤

  • Step 0:
    对预处理后的数据进行归一化处理;
  • Step 1:
    将归一化处理过的数据,应用k-means聚类算法,划分为多个区间:
    采用等距法设定k-means聚类算法的初始中心,得到聚类中心;
  • Step 2:
    在得到聚类中心后将相邻的聚类中心的中点作为分类的划分点,将各个对象加入到距离最近的类中,从而将数据划分为多个区间;
  • Step 3:
    重新计算每个聚类中心,然后重新划分数据,直到每个聚类中心不再变化,得到最终的聚类结果。
from sklearn.cluster import KMeans
kmodel=KMeans(n_clusters=k)  #k为聚成几类
kmodel.fit(data.reshape(len(data),1))) #训练模型
c=pd.DataFrame(kmodel.cluster_centers_) #求聚类中心
c=c.sort_values(by=’列索引') #排序  
w=pd.rolling_mean(c,2).iloc[1:] #用滑动窗口求均值的方法求相邻两项求中点,作为边界点
w=[0] +list(w[0] + [ data.max() ]  #把首末边界点加上
d3= pd.cut(data,w,labels=range(k)) #cut函数

2.2 二值化

二值化可以将数值型(numerical)的feature进行阀值化得到boolean型数据。这对于下游的概率估计来说可能很有用(比如:数据分布为Bernoulli分布时)。

ae2c09c65ef2569277c9d59a279e8ff4.png

对定量特征二值化(对列向量处理)

'''
定性与定量区别  定性:博主很胖,博主很瘦  
定量:博主有80kg,博主有60kg 
'''from sklearn.preprocessing import Binarizer
#二值化,阈值设置为3,返回值为二值化后的数据 ;>3显示为1,否则为0
print(iris.data)
Binarizer(threshold=3).fit_transform(iris.data)

对定性特征哑编码(对列向量处理)

from sklearn.preprocessing import OneHotEncoder 
#哑编码,对IRIS数据集的目标值,返回值为哑编码后的数据
print(OneHotEncoder().fit_transform(iris.target.reshape((-1,1))))

2.3 有监督分箱法

2.3.1 卡方分箱法

自底向上的(即基于合并的)数据离散化方法。它依赖于卡方检验:具有最小卡方值的相邻区间合并在一起,直到满足确定的停止准则。

https://github.com/tatsumiw/ChiMerge/blob/master/ChiMerge.py

2.3.2 最小熵法分箱

需要使总熵值达到最小,也就是使分箱能够最大限度地区分因变量的各类别。

熵是信息论中数据无序程度的度量标准,提出信息熵的基本目的是找出某种符号系统的信息量和冗余度之间的关系,以便能用最小的成本和消耗来实现最高效率的数据存储、管理和传递。
数据集的熵越低,说明数据之间的差异越小,最小熵划分就是为了使每箱中的数据具有最好的相似性。给定箱的个数,如果考虑所有可能的分箱情况,最小熵方法得到的箱应该是具有最小熵的分箱。

2.4 小结

  1. 我们对特征进行分箱后,需要对分箱后的每组(箱)进行woe编码和IV值的计算,通过IV值进行变量筛选后,然后才能放进模型训练。
  2. 分箱后需要进行特征编码,如:
    LabelEncode、OneHotEncode或LabelBinarizer等。

OX03 其它特征变换方法

多项式变换(对行向量处理)

'''
在多元回归分析中,	当特征不满足线性,可以多特征进行多项式变换'''from sklearn.preprocessing import PolynomialFeatures#多项式转换 
#参数degree为度,默认值为2  
PolynomialFeatures().fit_transform(iris.data)from numpy import log1p
from sklearn.preprocessing import FunctionTransformer 
#自定义转换函数为对数函数的数据变换 
#第一个参数是单变元函数 
FunctionTransformer(log1p).fit_transform(iris.data)

Box-Cox变换(对因变量处理)

from scipy.stats import boxcox_normmax
from scipy.special import boxcox1p
lambda_2=boxcox_normmax(test.B)
print(lambda_2)
test.B=boxcox1p(test.B,lambda_2)
print(test)
print(test.skew(axis=0))OUT:
0.9999999595600494A          B  c
0  1   5.033370  4
1  2  17.332385  5
2  3  26.623161  6
3  4   5.033370  7
A    0.000000
B    0.633103
c    0.000000
dtype: float64
特征工程这篇文档比较全面:sklearn中的数据预处理和特征工程 - 是安酱和菜菜呀 - 博客园

11种降维方法(未写)

特征选择方法(待补充)

选择特征的角度很多:变量的预测能力,变量之间的相关性,变量的简单性(容易生成和使用),变量的强壮性(不容易被绕过),变量在业务上的可解释性(被挑战时可以解释的通)等等。但是,其中最主要和最直接的衡量标准是变量的预测能力。

预测能力衡量:IV值,信息增益,基尼系数等;

1、 特征选择:特征发散,如果一个特征不发散,方差为0,说明样本在这个特征上基本没有差异,这个特征对于样本区分基本没用
2、 特征选择:考虑特征与目标的相关性,优先选择与目标相关性高的特征!
3、 根据方差选择特征:计算各个特征的方差,选择方差大于阈值的特征
4、 单变量特征选择:计算每个特征与y的相关性;对于回归问题或分类问题可以采用卡方检验的方式对特征进行检测
5、 皮尔逊相关系数(适用于回归问题即y连续),简单实用
6、 基于模型的特征融合方法:主成分分析,聚类,支持向量机,随机森林都可以作为筛选特征的方法

未完待续……

最后,欢迎关注我的数据分析专栏,目前已经超过1000+小伙伴聚集在这里学习了

数据分析​zhuanlan.zhihu.com
d12760a3994c0eba42f45bb83cc90031.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

盘点多款国产Linux桌面操作系统

编辑:strongerHuang微信公众号:strongerHuang素材来源:百度百科、网络国产操作系统多为以Linux 为基础二次开发的操作系统。2014年4月8日起,美国微软公司停止了对Windows XP SP3操作系统提供服务支持,这引起了社会和广…

kafka rabbitmq优劣对比_Kafka、RabbitMQ、RocketMQ等消息中间件的对比

原文链接:Kafka、RabbitMQ、RocketMQ等消息中间件的对比消息中间件现在有不少,网上很多文章都对其做过对比,在这我对其做进一步总结与整理。RocketMQ淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存…

你应该知道这些有意思的代码

Kyle McCormick 在 StackExchange 上发起了一个叫做 Tweetable Mathematical Art 的比赛,参赛者需要用三条推这么长的代码来生成一张图片。具体地说,参赛者需要用 C 语言编写 RD 、 GR 、 BL 三个函数,每个函数都不能超过 140 个字符。每个函…

python 对xlsx文件数根据日期进行统计分析_Python处理Excel的常用操作(一)

最近一直忙着学习和写开题报告,都没有时间更文了,今天偷偷来休闲一下。很多人一开始学习python,就是看到了很多关于python能够快速处理和解决表格的广告,于是便有了今天的分享。我主要利用pandas库来做一些简单且常规的操作。1、创…

(四)Asp.net web api中的坑-【api的返回值】

void无返回值IHttpActionResultHttpResponseMessage自定义类型我这里并不想赘述这些返回类型, 可以参考博文http://blog.csdn.net/leonken88/article/details/53063693 和大神的http://www.cnblogs.com/landeanfen/p/5501487.html 我要说我遇到的坑是, p…

C语言实现树,你一定看得懂

之前写了好多篇文章关于数据结构的,既然讲到了数据结构,那么就必须要说一下树,树这个数据结构使用范围非常广,应用前景广阔。关联文章:五分钟搞懂什么是红黑树(全程图解)Linux 内核红黑树分析这…

else应输入一个语句是什么意思_Python基础知识储备,关于if-else使用性能的一点感悟...

前面给大家介绍的if-if分支结构是只要条件满足就会执行;而if-else的语句结构是前面的条件成立执行什么操作,则下面的分支结构就不会被执行,若前面的条件不成立(否则)做什么。以下通过三个案例给大家演示if-else语句的使用方法:Pyt…

你应该拥有的无名剑

想了很久的名字,刹那间我不知道怎么给文章起名字了,一个响亮的名字远比正文来得精彩,既然题目比文章精彩,那么就会喧宾夺主,所以我们看很多古诗词的名字起名《无题》,也可以理解为某个时段,肚子…

你真的知道敏捷和迭代吗?

在这敏捷开发横行的时代中,人人都在谈敏捷,人人都在谈迭代,似乎大家好像都尝到了敏捷带来的甜头,记得有一次跟朋友吃饭,说他们现在的项目用敏捷开发,每个迭代都能看到不断完善的产品,非常有成就…

谈优势成长

以下文章来自我的一个同事,希望他的感悟能够帮助到一些人,大家共勉~工作忙碌的时候总是不能抽中空闲来读书,利用上周坐飞机的2个小时时间,不能看手机,不刷微信,我一口气读了一本好书《优势成长》。这不是一…

@cacheable 设置过期时间_缓存面试三连击——聊聊Redis过期策略?内存淘汰机制?再手写一个LRU 吧!...

大家好,今天我和大家想聊一聊有关redis的过期策略的话题。听到这里你也许会觉得:“我去,我只是个日常搬砖的,这种偏底层的知识点,我需要care吗?”话虽如此,但是兄die,如果你连标题上问题都不知道…

linux终端贪吃蛇,分享|nSnake: 在Linux的终端上玩经典的贪食蛇游戏

你知道20世纪末的那些古老的诺基亚手机上最棒的东西是什么吗? 贪食蛇! 我以前在这个看似无聊但却让人上瘾的游戏上花费了大把的时间。在古老的诺基亚手机被智能手机取代的同时,贪食蛇也被另外的无聊但却令人上瘾的游戏取代了,比如说&#xff…

vue 组件之间数据传递(七)

1、props:父组件 -->传值到子组件 app.vue是父组件 ,其它组件是子组件,把父组件值传递给子组件需要使用 >props 在父组件(App.vue)定义一个属性(变量)sexVal 男 把该值传递给 子组件(B.vue)&#x…

人在旅途之桂林

先说下这篇文章是多图的所以看文章的同学最好在wifi环境下之前有发文章说我们学院建院十周年所以,哈哈哈,就有机会回桂林嗨皮了出发的时候车子没电了,叫了保险过来搭电搞了一段时间,不过不影响我们顺利到达桂林第一时间先吃碗米粉…

python pyecharts 折线图_python数据大屏pyecharts库2020.8.31

数据大屏V0.1-2020.8.31前言千辛万苦,找到了python能实现数据大屏库pyecharts。1、https://gallery.pyecharts.org/#/Page/page_simple_layout2、主要是3个类,Grid:并行多图,Page:顺序多图,Tab:…

linux文件管理器添加项目,LXQt 0.14 发布,文件管理器添加拆分视图

LXQt团队已经发布了他们的轻量级Qt5支持的Linux桌面环境的0.14.0版本。LXQt 0.14为PCManFM-Qt文件管理器添加了一个拆分视图,其桌面图标角色现在支持计算机/网络/垃圾箱图标,通过libfm-qt改进更有效地处理挂载,LXImage-Qt现在可以处理图像EXI…

这两天,我们还没毕业

这两天在桂林,见了很多几年没见面的同学,从毕业后到现在,应该是人数最多的一次聚会了,如果用两个字来形容这次聚会,那应该是 「满足」两字。满足于多年没有见面的老同学,从天南聊到地北,从球场聊…

python parser count_8个超实用的Python脚本,收藏备用

脚本写的好,下班下得早!程序员的日常工作除了编写程序代码,还不可避免地需要处理相关的测试和验证工作。例如,访问某个网站一直不通,需要确定此地址是否可访问,服务器返回什么,进而确定问题在于什么。完成这…

LCD 设备驱动框架分析及核心结构

Linux 下很多东西都是和结构体相关,举个例子,时钟大家都知道吧,Linux 下对应时钟的东西就有好几个结构体,所以你要是想明白Linux 下那些东西,对结构体要有所了解,LCD 是基础的驱动设备,里面涉及…

kafka 启动_Kafka管理工具Kafka Manager

Kafka作为分布式消息系统以其轻量级、可扩展、高通吐等特点而得到广泛应用,最近在项目中用Kafka作为中间件进行数据交互。为了监控Kafka的运行情况,在网上找了个开源的Kafka监控工具Kafka-manager对Kafka集群监控。为什么选用Kafka-manager而不是KafkaOf…