scipy教程和应用
第一章 简介
第二章 基础操作
2.1 稀疏行压缩矩阵(compress sparse row matrix)
在科学数值计算时,长需要压缩稀疏矩阵,这时候就要用到scipy库中的sparse.csr_matrix。
csr_matrix((data, indices, indptr), shape=(3, 3)).toarray()
|—— data: 矩阵中非零元素的值
|—— indices:非零元素的列索引
|—— indptr: 0表示默认起点,0之后数值个数表示行数,count = indptr[i+1] - indptr[i]表示第i行非零元素的个数。
第三章 应用
3.1 稀疏行压缩矩阵应用
3.1.1 独热编码(one hot encoding)
在机器学习中,我们经常会遇到分类问题。独热编码是一种常用的处理分类数据的编码方法。它将离散的分类数据转换为二进制向量,其中每个分类值被编码为一个向量中的元素,只有一个元素被置为1(表示存在),其他元素都被置为0(表示不存在)。
独热编码的核心思想是为每个不同的分类值创建一个唯一的二进制编码。例如,一个包含颜色的分类标签集,可能取值为:红色、绿色和蓝色。使用独热编码,这些值被编码为:
- 红色:[1, 0, 0]
- 绿色:[0, 1, 0]
- 蓝色:[0, 0, 1]
def label_binarize(self, y, classes, neg_label=0, pos_label=1):
n_samples = len(y) # 样本数目
n_classes = len(classes) # 类别数目
classes = np.asarray(classes)
y = np.asarray(y)
sorted_class = np.sort(classes)
y_in_classes = np.in1d(y, classes)
y_seen = y[y_in_classes]
indices = np.searchsorted(sorted_class, y_seen) # 列索引
indptr = np.hstack((0, np.cumsum(y_in_classes)))
data = np.full_like(indices, fill_value=pos_label)
y = sp.csr_matrix((data, indices, indptr), shape=(n_samples, n_classes),
dtype=int, copy=False).toarray()
return y