机器学习算法无法直接用于数据分类。数据分类必须转换为数字才能进一步进行。

在本教程中,你将发现如何将输入或输出的序列数据转换为一种热编码,以便于你在Python中深度学习的序列分类问题中使用。
本教程分为4部分:

1.什么是One-Hot编码?

2.手动编写One-Hot编码

3.One-Hot Encode with scikit-learn.

4.One-Hot Encode with Keras.

1.什么是One-Hot编码?

One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。

One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。

2.One-Hot编码的工作示例

让我们用一个小例子来说明一下到底什么是One-Hot编码。假设我们有一个带有’red’和’green’值的标签序列。我们可以将’red’的整数值分配为0,’green’的整数值为1。只要我们总是将这些数字分配给这些标签,这称为整数编码。一致性是重要的,所以我们可以稍后反转编码,并从整数值获取标签。

接下来,我们可以创建一个二进制向量来表示每个整数值。对于2个可能的整数值,向量的长度为2。

编码为0的“红色”标签将用二进制向量[1,0]表示,其中第0个索引被标记为值1。然后,编码为1的“绿色”标签将用一个二进制向量[0,1],其中第一个索引被标记为1。

如果我们有序列:

‘red’,‘red’,‘green’。

我们可以用整数编码来表示它:

0,0,1

而One-Hot编码就为:

1           2      3
[1, 0] [1, 0] [0, 1]

1.为什么要使用One-Hot编码?

One hot 编码进行数据的分类更准确,许多机器学习算法无法直接用于数据分类。数据的类别必须转换成数字,对于分类的输入和输出变量都是一样的。

我们可以直接使用整数编码,需要时重新调整。这可能适用于在类别之间存在自然关系的问题,例如温度“冷”(0)和”热“(1)的标签。

当没有关系时,可能会出现问题,一个例子可能是标签的“狗”和“猫”。

在这些情况下,我们想让网络更具表现力,为每个可能的标签值提供概率式数字。这有助于进行问题网络建模。当输出变量使用one-hot编码时,它可以提供比单个标签更准确的一组预测。

2.手动One Hot编码:

在这个例子中,我们将假设我们有一个字符串的例子,但是示例序列并不涵盖所有可能的例子。

我们将使用以下字符的输入序列:

Hello world。

我们将假设所有可能输入是小写字母和空格的完整字母表。因此,我们将以此展示如何滚动我们自己的one hot编码。

完整的示例如下所示。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from  numpy  import  argmax

# define input string
data  =   'hello world'
print ( data )
# define universe of possible input values
alphabet  =   'abcdefghijklmnopqrstuvwxyz '
# define a mapping of chars to integers
char_to_int  =   dict ( ( c ,  i )   for  i ,  c  in   enumerate ( alphabet ) )
int_to_char  =   dict ( ( i ,  c )   for  i ,  c  in   enumerate ( alphabet ) )

# integer encode input data
integer_encoded  =   [ char_to_int [ char ]   for   char   in  data ]
print ( integer_encoded )

# one hot encode
onehot_encoded  =   list ( )

for  value  in  integer_encoded :
    letter  =   [ 0   for  _  in   range ( len ( alphabet ) ) ]
    letter [ value ]   =   1
    onehot_encoded . append ( letter )
     print ( onehot_encoded )
     # invert encoding
    inverted  =  int_to_char [ argmax ( onehot_encoded [ 0 ] ) ]
     print ( inverted )

运行示例首先打印输入字符串。运行结果:

u@u-VirtualBox:~$ python onehot.py
hello world
[7, 4, 11, 11, 14, 26, 22, 14, 17, 11, 3]
[[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
h
[[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
h
[[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
h
[[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
h
[[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
h
[[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 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, 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, 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, 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]]
h
[[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 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, 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, 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, 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], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0]]
h
[[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 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, 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, 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, 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], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
h
[[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 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, 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, 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, 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], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
h
[[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 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, 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, 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, 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], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
h
[[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 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, 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, 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, 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], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

所有可能的输入的映射都是从char值创建为整数值。然后使用该映射对输入字符串进行编码。我们可以看到输入’h’中的第一个字母被编码为7。然后将整数编码转换为one hot编码。一次完成一个整数编码的字符。创建0个值的列表,以便字母表的长度可以表示任何预期的字符的长度。

接下来,特定字符的索引标记为1。我们可以看到,编码为7的第一个字母“h”整数由二进制向量表示,长度为27,第七个索引标记为1。

最后,我们反转第一个字母的编码并打印结果。我们通过使用NumPy argmax()函数定位具有最大值的二进制向量中的索引,然后使用字符值的反向查找表中的整数进行整数。

3.One-Hot Encode with scikit-learn:
在这个例子中,我们假设你有一个输出序列如下3个标签:


1
Cold , warm , hot

10个时间序列的示例顺序可以是:


1
Cold , cold , warm , cold , hot , hot , warm , cold , warm , hot

这将首先需要一个整数编码,如1,2,3,然后是整数到one hot编码具有3个值的二进制向量,例如[1,0,0]。

这个情况下提供序列中每个可能值的至少一个示例。因此,我们可以使用自动方法来定义整数到二进制向量的映射。

在这个例子中,我们将使用scikit学习库的编码器。具体来说,LabelEncoder创建标签的整数编码,OneHotEncoder用于创建整数编码值的one hot编码。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from  numpy  import   array
from  numpy  import  argmax
from  sklearn . preprocessing   import   LabelEncoder
from  sklearn . preprocessing   import   OneHotEncoder
# define example
data  =   [ 'cold' ,   'cold' ,   'warm' ,   'cold' ,   'hot' ,   'hot' ,   'warm' ,   'cold' ,   'warm' ,   'hot' ]
values  =   array ( data )
print ( values )
# integer encode
label_encoder  =   LabelEncoder ( )
integer_encoded  =  label_encoder . fit_transform ( values )
print ( integer_encoded )
# binary encode
onehot_encoder  =   OneHotEncoder ( sparse = False )
integer_encoded  =  integer_encoded . reshape ( len ( integer_encoded ) ,   1 )
onehot_encoded  =  onehot_encoder . fit_transform ( integer_encoded )
print ( onehot_encoded )
# invert first example
inverted  =  label_encoder . inverse_transform ( [ argmax ( onehot_encoded [ 0 ,   : ] ) ] )
print ( inverted )

运行示例首先打印标签序列。之后是标签的整数编码,最后是one hot编码。训练数据包含所有可能示例的集合,因此我们可以依靠整数和one hot编码变换来创建标签到编码的完整映射。

默认情况下,OneHotEncoder类将返回更高效的稀疏编码,这可能不适用于某些应用程序。例如使用Keras深度学习库。在这种情况下,我们通过设置sparse = False这个参数来禁用稀疏返回类型。

首先,我们可以使用argmax()NumPy函数来找到具有最大值的列的索引。然后可以将其输入到LabelEncoder,以计算反向变换回文本标签。运行结果为:

['cold' 'cold' 'warm' 'cold' 'hot' 'hot' 'warm' 'cold' 'warm' 'hot'][0 0 2 0 1 1 2 0 2 1][[ 1. 0. 0.][ 1. 0. 0.][ 0. 0. 1.][ 1. 0. 0.][ 0. 1. 0.][ 0. 1. 0.][ 0. 0. 1.][ 1. 0. 0.][ 0. 0. 1.][ 0. 1. 0.]]['cold']

在下一个例子中,我们来看一下如何直接对一个整数值进行one hot编码。

4.One Hot Encode with Keras:

您可能有一个已经是整数编码的序列。

经过处理后,您可以直接使用整数。或者,您可以直接对整数进行one hot 编码。这是非常重要的如果整数没有真正的顺序关系并且只是标签的占位符。

Keras提供了一个名为to_categorical()的函数,它可以帮助你使用one hot编码整数数据。接下来我们看一个小例子:

在这个例子中,我们有4个整数值[0,1,2,3],我们有以下10个数字的输入序列:

Data = [1,3,2,0,3,2,2,1,0,1]

该序列具有已知了所有值,因此我们可以直接使用to_categorical()函数。以下列出了此功能的完整示例。


1
2
3
4
5
6
7
8
9
10
11
12
13
from  numpy  import   array
from  numpy  import  argmax
from  keras . utils   import  to_categorical
# define example
data  =   [ 1 ,   3 ,   2 ,   0 ,   3 ,   2 ,   2 ,   1 ,   0 ,   1 ]
data  =   array ( data )
print ( data )
# one hot encode
encoded  =  to_categorical ( data )
print ( encoded )
# invert encoding
inverted  =  argmax ( encoded [ 0 ] )
print ( inverted )

运行示例并打印输入序列。

然后将整数编码为二进制向量并打印。我们可以看到,正如我们预期的那样,第一个整数值1被编码为[0,1,0,0]。

然后,我们使用NumPy argmax()函数反转编码,该函数返回第一个整数的期望值1的序列中的第一个值。

[1 3 2 0 3 2 2 1 0 1][[ 0. 1. 0. 0.][ 0. 0. 0. 1.][ 0. 0. 1. 0.][ 1. 0. 0. 0.][ 0. 0. 0. 1.][ 0. 0. 1. 0.][ 0. 0. 1. 0.][ 0. 1. 0. 0.][ 1. 0. 0. 0.][ 0. 1. 0. 0.]1
参考页面:

http://www.mtcnn.com/?p=88

https://yq.aliyun.com/articles/126741

详细详解One Hot编码-附代码相关推荐

  1. 【超全】一文详解机器学习特征工程(附代码)

    特征工程是使用专业背景知识和技巧处理数据,使得特征值(自变量)能在机器学习算法上发挥更好的作用的过程.python的sklearn库,对于特征工程的处理提供了强大的接口. 在本文中,我将详细介绍特征工 ...

  2. ASM原理详解,以及使用附代码,AOP利器

    少年,git代码,带你快速理解:https://github.com/singgel/eight-sorting-algorithms/tree/master/src/test/java/com/hk ...

  3. python进阶装饰器_Python进阶: 通过实例详解装饰器(附代码)

    Python中的装饰器有很多用处,比如输出日志.参数检查.代理设置.计数计时.结果缓存等等.本文就通过几个装饰器例子,详细解释一下Python中装饰器的用法.一步步从简到繁学习装饰器用法 其他一些装饰 ...

  4. java构造方法详解(构造器)附代码例子

    前言必读 读者手册(必读)_云边的快乐猫的博客-CSDN博客  前言:构造器就是在创建对象的时候给成员变量进行初始化赋值的. 一.名词解释: 1.构造方法也叫构造器.构造函数. 2.如果没有写构造方法 ...

  5. 数学建模二:TOPSIS法(优劣解距离法) 附代码详解

    数学建模二:TOPSIS法(优劣解距离法)附代码详解 TOPSIS法(优劣解距离法)用于评价类问题. 层次分析法因为受限于一致性检验指标的数量,最多只能选择15个准则或方案.同时层次分析法也难以处理已 ...

  6. Unicode编码详解(二):编码预备知识

    Unicode编码详解(二):编码预备知识 本文为原创文章,转载请注明出处,或注明转载自"黄邦勇帅(原名:黄勇) 本文是对<C++语法详解>一书相关章节的增补,以增强读者对字符的 ...

  7. top命令参数详解(linux top命令的用法详细详解)

    通过top命令可以有效的发现系统的缺陷出在哪里.是内存不够.CPU处理能力不够.IO读写过高. top命令输出长这样: top命令参数详解(linux top命令的用法详细详解) 以下解析一下各个字段 ...

  8. php中的装饰,详解PHP装饰模式的示例代码

    详解PHP装饰模式的示例代码<?php // 装饰模式 function echoLine($msg) { echo $msg, ' '; } class RequestHelper { /** ...

  9. 第9届全国大学生 GIS 技能大赛下午试题详解(下)附练习数据

    01 数据说明 主要道路.shp:江苏省主要道路数据来源于 OpenStreet 网站. 江苏省省界.shp:江苏省行政区面数据. 江苏市届.shp:江苏省地级市面数据. 江苏县界.shp:江苏省区县 ...

最新文章

  1. .net中连接SYBASE的种种问题
  2. 公开课报名 | 深入浅出理解A3C强化学习
  3. 初识广度优先搜索与解题套路
  4. Android进程保活方案
  5. 多核处理器_手机处理器性能排行:骁龙865第四,麒麟9000拿下第二
  6. input的readonly属性与TextBox的ReadOnly和Enabled属性区别
  7. 办公室里绝对不可谈论的4大话题
  8. matlab 常用命令
  9. reverseajax(comet) socket 杂记
  10. 关于javascript对象的prototype与constructor
  11. 7-45 航空公司VIP客户查询 (25 分)(思路+详解+map用法解释+超时解决)兄弟们来呀冲压呀呀呀呀
  12. ROS : 修改ROS源代码(overlaying package)
  13. 基于OpenCV的计算机视觉入门(5)图像美化(上)
  14. pytreebank︱情感分析可视化——情感结构树
  15. 【渝粤教育】国家开放大学2018年秋季 0365-21T电子商务概论 参考试题
  16. 【BZOJ】2194: 快速傅立叶之二
  17. 解决华为安全键盘收回, 软键盘位置没收回的问题
  18. 路由器与三层交换机的区别
  19. ppt python 图表_5分钟python:在PPT里做三联柱形图
  20. elementui中多选下拉框 multiple属性时 编辑表单如何显示默认值问题解决 以及校验验证问题

热门文章

  1. HCL Nomad for Web 1.0.3发布
  2. 怎么修改html模板里的背景,怎么修改网页背景
  3. Linux基础命令-tar打包压缩文件
  4. Unity Shader学习:动态模糊(shutter angle方式)
  5. Sequoia DB数据库操作
  6. mysql中的锁(表锁,行锁)
  7. mysql:列类型之时间日期
  8. matlab图像处理--Otsu阈值分割
  9. 俄勒冈大学计算机科学专业,俄勒冈大学计算机与信息科学专业怎么样?高薪热门专业等你来...
  10. Redis采用的单线程+多路IO复用