python-scipy

Python Scipy的使用

稀疏矩阵

Python中一般会使用numpy.ndarray来保存矩阵数据,但是存在这样一种矩阵,它的长和宽都很大,然而其中有非常多0的元素存在。直接使用ndarray来保存数据,会带来巨大的资源浪费。在这种情况下,我们可以设计一种方法只保存非0的元素以此来实现压缩。

格式

应用API


postgresql-usage

PostgreSQL使用技巧

psql

输出重定向

将psql打印在终端的结果,使用”\o FILE”即可实现

1
2
3
4
# psql db
db=>\o out.txt
db=>\dt
db=>\q

python-vscode

VSCode Python使用技巧

Python文件Jupyter Notebook化

通常来说,一个Python文件(*.py)只能使用Python解释器完全的执行,而使用Jupyter Notebook运行Notebook文件的话(*.ipynb)就可以一块一块代码段运行,但是VSCode对Jupyter的支持比较弱,一个替代方法是Python文件里添加特殊的注逝。

Jupyter复制内容

Jupyter Cell生成的内容(字符串)没有直接复制的选项,要想实现复制的话,需要首先使用光标选中内容,然后将光标拖出去,即离开Jupyter Notebook打印内容的窗口,然后按下Ctrl + C即可实现内容的复制。

参考资料

https://github.com/microsoft/vscode-jupyter/issues/854


macos-config

macos使用技巧

本篇记录了,macOS在使用中的一些问题和对应的解决办法

homebrew安装软件时不自动更新

1
export HOMEBREW_NO_AUTO_UPDATE=1

处理声音卡死的bug

1
sudo killall coreaudiod		# Mac视频无法播放

处理程序坞消失的bug

1
killall Dock vscode		# 在程序坞消失

python-plot

Python绘图指南

matplotlib

基本绘图的pipeline

直方图的绘制

1
plt.hist(arr, bins=20)

设置画布大小

1
plt.figsize((10, 10))

显示标签

假设你想画两个折线图,需要在图上反映出每一条折线所代表的含义

1
2
3
4
plt.plot(x1, label = "x1")
plt.plot(x2, label = "x2")
plt.legend()
plt.show()

同一张图里不同scale的折线

你需要在同一张图里花两条折线来分析它们的相关性

1
2
3
4
5
6
7
8
9
10
11
from matplotlib import pyplot as plt
fig, ax = plt.subplots()
ax.plot(small_y[i*100 : (i+1)*100], color = "red", marker="o")
# ax.set_xlabel()
ax.set_ylabel("CPU Usage", color = "red", fontsize = 14)

ax2 = ax.twinx()
ax2.plot(small_X.sum(axis = 1)[i * 100: (i+1) * 100], color = "blue")
ax2.set_ylabel("total_count", color = "blue", fontsize = 14)

plt.show()

seaborn

绘制热力图

1
2
import seaborn as sns
sns.heatmap(data)

graphviz


python-numpy

Python Numpy使用记录

本篇记录了numpy中的一些常用的数据处理方法

Read more
python-pandas

Python Pandas使用记录

本篇内容是本人在使用pandas做数据处理任务的一个总结

Read more
python-sklearn

Python Scikit-Learn使用记录

预处理

某些时候在使用机器学习模型之前,我们需要将数据进行归一化或者标准化的操作,下面给出这两种数据变化方式的定义。

  • 归一化(normalization): 原来的数据按比例放缩到[0,1]这一个区间上
  • 标准化(standardization): 原来所有的数据都减一个平均值,然后再除以一个方差
1
2
3
4
5
6
7
8
9
10
>>> X_train = np.array([[ 1., -1.,  2.],
... [ 2., 0., 0.],
... [ 0., 1., -1.]])
...
>>> min_max_scaler = preprocessing.MinMaxScaler()
>>> X_train_minmax = min_max_scaler.fit_transform(X_train)
>>> X_train_minmax
array([[0.5 , 0. , 1. ],
[1. , 0.5 , 0.33333333],
[0. , 1. , 0. ]])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
>>> from sklearn import preprocessing
>>> import numpy as np
>>> X_train = np.array([[ 1., -1., 2.],
... [ 2., 0., 0.],
... [ 0., 1., -1.]])
>>> scaler = preprocessing.StandardScaler().fit(X_train)
>>> scaler
StandardScaler()

>>> scaler.mean_
array([1. ..., 0. ..., 0.33...])

>>> scaler.scale_
array([0.81..., 0.81..., 1.24...])

>>> X_scaled = scaler.transform(X_train)
>>> X_scaled
array([[ 0. ..., -1.22..., 1.33...],
[ 1.22..., 0. ..., -0.26...],
[-1.22..., 1.22..., -1.06...]])

测试集、训练集的划分

我们一般使用train_test_split来进行训练集和测试集的划分,这里有几个重要参数

  • test_size: [0,1]的数,测试集在总数据的比例
  • random_state: 随机状态种子

key point

如何在训练集、测试集划分以后保留index?

方法:train_test_split前面的参数可以看作是一个array list,一般情况下我们会传入data_X,data_y,数据在
打乱划分以后还是保留着顺序对应关系的,根据这个原理,我们可以手动的构建一个索引array(通过np.arange)。这个
index array也会变成train index和test index

1
2
3
4
5
from sklearn.model_selection import train_test_split

indices = np.arange(self.data_X.shape[0])
X_train, X_test, y_train, y_test, idx_train, idx_test = \
train_test_split(self.data_X, self.data_y, indices, test_size = test_rate, random_state = rand_seed)

监督学习

回归

分类

非监督学习

参考

https://scikit-learn.org/stable/modules/preprocessing.html


python-daily

Python的日常使用方法

简介

本篇内容记录了博主日常使用Python中,Built-In packge里面常用但是不容易记住的方法,以及一些小的tricks

Read more
postgresql-install

PostgreSQL源码安装及相关配置

简介

这篇文章将会介绍如何从源码开始安装PostgreSQL,PostgreSQL有很多的安装方法,但是使用源码从头安装,用户可以控制选项参数,也可以选择自己想要的版本。总体来看PostgreSQL使用源码安装还是比较简单的。下面是对各个步骤的具体介绍

Read more