1、什么是 one-hot 编码
one-hot 编码用于将离散的分类标签转换为二进制向量。
注意这里有两个关键词,第一个是离散的分类,第二个是二进制向量。
import pandas as pd
from sklearn.preprocessing import OneHotEncoder
# 创建示例数据集
data = pd.DataFrame({'color': ['red', 'blue', 'green', 'yellow'']})
# 创建独热编码器对象
encoder = OneHotEncoder()
# 训练独热编码器
encoder.fit(data)
# 转换特征向量
#就是将'red', 'blue', 'green', 'yellow'这几个转换成[[0001][0010][01001][1000]]
encoded_data = encoder.transform(data).toarray()
#处理未知类别
# 创建新的独热编码器对象,设置handle_unknown参数为'ignore'
encoder_handle_unknown = OneHotEncoder(handle_unknown='ignore')
# 训练新的独热编码器
encoder_handle_unknown.fit(data)
# 转换特征向量
encoded_data_handle_unknown = encoder_handle_unknown.transform(data).toarray()
# 将编码后的特征向量与原始数据集合并
encoded_df = pd.DataFrame(encoded_data, columns=encoder.get_feature_names_out(['color']))
result = pd.concat([data, encoded_df], axis=1)
参考来自:https://blog.51cto.com/u_16175448/7272257
2、向量化
什么是向量化?
向量化是将操作应用于整个数组或数据系列的过程,而不是逐个遍历每个元素。在Pandas中可以对整个列或Series执行操作,而无需编写显式循环。这种高效的方法利用了底层优化的库,使您的代码更快、更简洁。
传统的基于循环的处理
在许多编程场景中,可能需要对数据元素集合执行相同的操作,例如逐个添加两个数组或对数组的每个元素应用数学函数。一般都会使用循环一次迭代一个元素并执行操作。
下面是一个没有向量化的Python示例:
list1 = [1, 2, 3, 4, 5]
list2 = [6, 7, 8, 9, 10]
result = []
for i in range(len(list1)):
result.append(list1[i] + list2[i])
print(result)
Output:
[7, 9, 11, 13, 15]
使用NumPy进行向量化操作
NumPy是一个流行的Python库,提供对向量化操作的支持。它利用了优化的C和Fortran库,使其在数值计算方面比纯Python循环快得多。
下面是使用NumPy的相同加法操作:
array1 = np.array([1, 2, 3, 4, 5])
array2 = np.array([6, 7, 8, 9, 10])
result = array1 + array2
print(result)
Output:
[ 7 9 11 13 15]
padas的向量化:
import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
# Using vectorization to add columns 'A' and 'B'
df['C'] = df['A'] + df['B']
print(df['C'])
Output:
0 5
1 7
2 9
2、apply
向量化还允许对列应用自定义函数。假设你想计算一列中每个元素的平方:
import pandas as pd
data = {'A': [1, 2, 3]}
df = pd.DataFrame(data)
# Define a custom function
def square(x):
return x ** 2
# Applying the 'square' function to the 'A' column
df['A_squared'] = df['A'].apply(square)
print(df['A_squared'])
Output:
0 1
1 4
2 9
3、条件操作
也将矢量化用于条件操作,比如基于列a中的条件创建一个新的列D:
import pandas as pd
data = {'A': [1, 2, 3]}
df = pd.DataFrame(data)
# Creating a new column 'D' based on a condition in column 'A'
df['D'] = df['A'].apply(lambda x: 'Even' if x % 2 == 0 else 'Odd')
print(df)
Output:
A D
0 1 Odd
1 2 Even
2 3 Odd
学习向量化在各个领域都有广泛的应用,以下是一些常见的应用场景:
图像处理:学习向量化可以用于图像特征提取、图像分类和图像检索等任务。
自然语言处理:学习向量化可以用于文本分类、情感分析和主题建模等任务。
推荐系统:学习向量化可以用于用户画像建模、商品特征提取和推荐算法优化等任务。
数据挖掘:学习向量化可以用于聚类、异常检测和数据可视化等任务。
生物信息学:学习向量化可以用于基因表达数据分析、蛋白质结构预测和药物设计等任务。
信号处理:学习向量化可以用于音频信号处理、视频信号处理和传感器数据分析等任务。
金融分析:学习向量化可以用于股票价格预测、风险评估和投资组合优化等任务。
医学影像分析:学习向量化可以用于医学影像分割、疾病诊断和治疗方案设计等任务。
工业控制:学习向量化可以用于工业过程监控、质量控制和故障诊断等任务。
社交网络分析:学习向量化可以用于社交网络用户画像建模、社区发现和事件检测等任务
Python中有很多方法可以实现学习向量化,以下是一些常用的方法:
scikit-learn库:scikit-learn是一个常用的Python机器学习库,它提供了多种学习向量化的方法,包括PCA、t-SNE和LLE等。
TensorFlow库:TensorFlow是一个流行的深度学习框架,它提供了多种自编码器模型,可以用于学习向量化。
Keras库:Keras是一个高层次的深度学习库,它提供了多种自编码器模型和降维方法,可以用于学习向量化。
PyTorch库:PyTorch是另一个流行的深度学习框架,它提供了多种自编码器模型和降维方法,可以用于学习向量化。
gensim库:gensim是一个专门用于处理文本数据的Python库,它提供了多种主题模型和词向量模型,可以用于学习向量化。