Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 290c976

Browse files
committed
add scikit_learn
1 parent cb8f576 commit 290c976

29 files changed

+603
-36
lines changed

packages/beautiful_soup_usage.md

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
<!--
2-
作者:华校专
3-
4-
** 本文档可用于个人学习目的,不得用于商业目的 **
5-
-->
61
# Beautiful Soup 笔记(基于`BeautifulSoup 4.4.1`
72
`BeautifulSoup`是从HTML或者XML中提取数据的Python库。目前`Beautiful Soup 3`已经停止开发,推荐在现在的项目中使用`Beautiful Soup 4`, 安装的命令为`pip install beautifulsoup4`
83
> 如果执行命令`pip install beautifulsoup`则安装的是`Beautiful Soup 3`
53.4 KB
Loading
96.2 KB
Loading

packages/imgs/numpy/c_function.JPG

16 KB
Loading

packages/imgs/numpy/insert_axis.JPG

29.9 KB
Loading

packages/imgs/numpy/meshgrid.JPG

18.6 KB
Loading
41.7 KB
Loading
59.3 KB
Loading
51.2 KB
Loading
106 KB
Loading
77.6 KB
Loading
Loading
19.6 KB
Loading
Loading
165 KB
Loading

packages/imgs/scikit_learn/1_knn.png

77.5 KB
Loading
Loading
Loading
Loading

packages/matplotlib_usage.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1062,6 +1062,7 @@ ax.transData, ax.transAxes)`能够返回一个混合坐标系,该坐标系中
10621062
10631063
![级坐标](./imgs/matplotlib/polar_coordinate.JPG)
10641064

1065+
10651066
## 八、技巧
10661067

10671068
### 1. 共享坐标轴
@@ -1206,3 +1207,67 @@ ax.grid() #开启网格
12061207

12071208
- `Axis.set_ticks_position`:设置 `tick` 位置,可以为:` 'top' | 'bottom' | 'both' | 'default' | 'none'`,如果为 `'None'`则不显示 `tick`
12081209
- `Axis.set_label_position`:设置`label`位置,可以为:` 'top'| 'bottom'`
1210+
1211+
1212+
### 10、matplotlib.colors
1213+
1214+
`matplotlib.colors`是一个模块,用于转换数字或者颜色参数到 `RGB` 或者`RGBA`
1215+
1216+
- `RGB`:一个浮点数序列,有3个浮点数。每个数都是 0-1之间
1217+
- `RGBA`:一个浮点数序列,有4个浮点数。每个数都是 0-1之间
1218+
1219+
它里面有个常用的功能就是生成一个 `colormap`,它用于将一个数字序列转换成一个颜色序列。通常有下列两个步骤:
1220+
1221+
- 将数字归一化到0-1之间(通过` Normalize` 类对象或者其子类对象)
1222+
- 将0-1之间的数字映射到一个颜色 (通过 `Colormap` 类对象或者其子类对象)
1223+
1224+
`matplotlib.colors.ColorConverter` 提供了一个单例对象用于转换数字或者数字序列到 `color`
1225+
1226+
####a. ListedColormap
1227+
`matplotlib.colors.ListedColormap(colors, name=’from_list’, N=None)`基类是`matplotlib.colors.Colormap`。它用于从一个`list of colors`中创建`colormap`
1228+
1229+
### 11. 绘制color map
1230+
1231+
- `matplotlib.pyplot.pcolor(*args, **kwargs)`:用于绘制颜色图,返回一个`matplotlib.collections.Collection `对象。常用的调用方法为:
1232+
1233+
```
1234+
pcolor(C)
1235+
pcolor(C,**kwargs)
1236+
```
1237+
1238+
- `matplotlib.pyplot.pcolormesh(*args, **kwargs)`:用于绘制一个四边形网格。它类似于 `pcolor()`,但是机制不同,且返回的是`QuadMesh`对象。它绘图更快。常用的调用方法为:
1239+
1240+
```
1241+
pcolormesh(C)
1242+
pcolormesh(X,Y,C)
1243+
pcolormesh(C,**kwargs)
1244+
```
1245+
1246+
其中参数为:
1247+
1248+
- `C`:为一个 `masked array`。它会被转换成一个 `ColorMap`,然后对相应的网格图上颜色
1249+
- `X``Y`是网格参数,通常他们是从 `numpy.meshgrid(x_array,y_array))`获取。其中 `x_array`是一维数组,代表划分X轴网格的横坐标; `y_array`是一维数组,代表划分Y轴网格的纵坐标
1250+
> X,Y,C 形状相同。其中X和Y对应于网格的划分,C对应于颜色的分配(相同C[i][j]值的网格,颜色相同)
1251+
1252+
![pcolormesh_pcolor](imgs/matplotlib/pcolormesh_pcolor.JPG)
1253+
1254+
![pcolormesh_pcolor](imgs/matplotlib/pcolormesh_pcolor_2.JPG)
1255+
1256+
### 12. 清除绘图
1257+
1258+
你可以通过 `pyplot`来清除绘图:
1259+
1260+
- `pyplot.cla()`:清除`current axis`。非当前`axis`不受影响
1261+
- `pyplot.clf()`:清除`current figure`。但是它不关闭`window`
1262+
- `pyplot.close()`:关闭`window`
1263+
1264+
你也可以通过面向对象的方法:
1265+
1266+
- `Figure.clf()`:清除该`Figure`对象的所有内容。
1267+
1268+
### 13. 清除X坐标和Y坐标:
1269+
1270+
```
1271+
Axes.set_xticks(())
1272+
Axes.set_yticks(())
1273+
```

packages/numpy_usage.md

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
<!--
2-
作者:华校专
3-
4-
** 本文档可用于个人学习目的,不得用于商业目的 **
5-
-->
61
# Numpy学习笔记 (基于Numpy 1.11.0)
72

83
- `ndarray``NumPy`最重要的对象就是`ndarray`(也可以称它为`array`),它是一个多维的容器。其存放元素通常是相同的类型和大小的。
@@ -193,8 +188,10 @@
193188
- `numpy.vstack(seq)`:垂直拼接(即其他维度不变,维度0拼接),返回新创建的拼接后的`ndarray``seq`是一个序列,每个元素为一个`array-like`对象或者`ndarray`,且要求每个元素满足形状条件:除了维度0长度,其他维度长度必须相同。
194189
- `numpy.column_stack(seq)`:将一维数组按列拼接成二维数组,返回新创建的拼接后的`ndarray``seq`是一个序列,每个元素为一个`array-like`对象或者`ndarray`,且要求是一维的。拼接规则为:第一维长度为原数组长度,第二维长度为2,结果数组第二维每个元素为原来的数组序列中各取一个值的组成的数组。
195190
- `numpy.concatenate((a1, a2, ...), axis=0)`:将一系列数组按照指定轴线拼接,返回新创建的拼接后的`ndarray``a1、a2、....`都是`array_like`对象,且要求每个元素满足形状条件:除了维度`axis`长度,其他维度长度必须相同。`axis`为拼接轴,默认为0(以哪个轴为拼接轴,就变化该轴的长度)
191+
- `numpy.c_[a1,a2,...]`:沿着第二个轴拼接
196192

197193
![ndarray拼接](./imgs/numpy/concatenate.JPG)
194+
![c_function](./imgs/numpy/c_function.JPG)
198195

199196
### 9. ndarray 的拆分
200197

@@ -774,4 +771,32 @@ $$ P(x;l,m,r)= \left\\{
774771
- `numpy.nan_to_num(x)`:将`x`中的下列数字替换掉,返回替换掉之后的新数组:
775772
- `NaN`:替换为0
776773
- 正无穷:替换为一个非常大的数字
777-
- 负无穷:替换为一个非常小的数字
774+
- 负无穷:替换为一个非常小的数字
775+
776+
### 4. meshgrid
777+
778+
`numpy.meshgrid(x,y)`:返回两个向量的网格。
779+
780+
- `x``y`均为一维的数组,代表网格的`x`轴和 `y`轴坐标
781+
- 返回一个元组 `(X,Y)`,其中`X`是个数组,它是由`x`沿着第一维扩展成`(y.size,x.size)`大小的数组;`Y `也是个数字。它是`y `先转置,再沿着 第二维扩展成`(y.size,x.size)`大小的数组
782+
783+
![meshgrid](./imgs/numpy/meshgrid.JPG)
784+
785+
### 5. 升维
786+
787+
在对数组切片时,可以插入 `None`或者`numpy.newaxis`来对切片之后的结果升维。它们被插入的位置就是被增加的维度:
788+
789+
![insert_axis](./imgs/numpy/insert_axis.JPG)
790+
791+
### 6. 行向量、列向量
792+
793+
行向量的形状为`(1,n)`,列向量的形状为`(n,1)`。行向量与列向量可以通过转置操作完成相互转换。
794+
> 注意:不是 `(n,)`
795+
796+
- 生成行向量的方法:
797+
- `np.c_[n_1,n_2]`:其中 `n1`,`n2`等等均为数字
798+
799+
- 生成列向量的方法:
800+
- `np.c_[n_1,n_2].T`:其中 `n1`,`n2`等等均为数字
801+
802+
![row_column_vector](./imgs/numpy/row_column_vector.JPG)

packages/pip_usage.markdown

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
<!--
2-
作者:华校专
3-
4-
** 本文档可用于个人学习目的,不得用于商业目的 **
5-
-->
61
# pip使用指南(基于pip 8.1.1)
72

83
当你使用Python2.7.9以及Python3.4以上的Python版本时,pip已经默认随Python一起安装,但是你可能需要不定期的更新pip。

packages/python_mysql_usage.md

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
<!--
2-
作者:华校专
3-
4-
** 本文档可用于个人学习目的,不得用于商业目的 **
5-
-->
61
# mysql-connector-python 使用笔记 (基于2.0.4)
72

83
mysql-connector-python 是 Oracle 官方推出的`mysql``python connector`,下载地址可以从

packages/requests_usage.md

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
<!--
2-
作者:华校专
3-
4-
** 本文档可用于个人学习目的,不得用于商业目的 **
5-
-->
61
# Reuqests笔记(基于requests2.9.1)
72

83
## 一、发送请求
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# Quick Start
2+
3+
1.机器学习的问题分类:
4+
5+
机器学习的目的是通过给定的一系列采样点来试图预测未知数据的特性。通常样本数据都是多维度的,每一个维度定义了一个特征(或者乘坐属性)。机器学习的问题可以大致如下分类:
6+
7+
- 监督学习:样本数据已经正确的标定。监督学习可以分为分类问题和回归问题
8+
- 非监督学习:主要用于聚类、密度估计、降维
9+
10+
2.`scikit-learn` 自带了一些标准的数据集。如:
11+
12+
- `iris``digits`数据集:用于分类.
13+
- `iris`: 用于分类鸢尾花的50个样本点,这些样本点属于三种鸢尾花。它有四个特征:萼片和花瓣的长度和宽度。
14+
- `digits`:用于手写数字识别。
15+
- `boston house prices dataset` 数据集:用于回归
16+
17+
我们可以通过下面的方法来加载数据集:
18+
19+
```
20+
from sklearn import datasets
21+
iris = datasets.load_iris()
22+
digits = datasets.load_digits()
23+
```
24+
25+
数据集对象是一个类似字典的对象,它持有底层的数据以及某些关于数据的`metadata`
26+
27+
- `digits.data`:存储了数据。它是一个 二维的`(n_samples,n_features)`大小的数组。 `n_samples`为样本点数量,`n_features`为特征数量。
28+
- 在监督学习中, `digits.target` 存放着标定结果
29+
- 所有的数据都是二维数组,其中第一维为样本点数量 `n_samples`, 第二维是特征`n_features`。但是有可能特征本身是多维的
30+
31+
![dataset](../imgs/scikit_learn/0_dataset.JPG)
32+
33+
3.**学习和预测**:在 `scikit-learn`中,一个`estimator` 是一个实现了 `.fit(X,y)`方法和 `.predict(T)`方法的 Python对象。
34+
35+
- `.fit(X,y)`方法实现训练过程。其中`X`为训练集样本点的特征,`y`为对应的标定
36+
- `.predict(T)`方法实现预测过程。其中`T`为某个待预测点的特征
37+
38+
如用支持向量机预测手写数字识别:
39+
40+
```
41+
from sklearn import datasets
42+
from sklearn import svm
43+
digits = datasets.load_digits()
44+
clf = svm.SVC(gamma=0.001, C=100.)
45+
clf.fit(digits.data[:-1], digits.target[:-1]) # 最后一个样本点作为预测点
46+
clf.predict(digits.data[-1:])
47+
```
48+
49+
![learn_train](../imgs/scikit_learn/0_learn_train.JPG)
50+
51+
4.**模型存储**:当你学习到一个模型的时候,你可能需要将它存储一起来从而在将来随时用于预测数据。有两种方法可以存储:
52+
53+
- 利用Python的 `pickle`模块:
54+
55+
```
56+
import pickle
57+
...
58+
s=pickle.dumps(clf) # 存储模型
59+
clf2=pickle.loads(s)# 加载模型
60+
clf2.predict(...)
61+
...
62+
```
63+
- 利用`sklearn.externals.joblib`
64+
65+
```
66+
from sklearn.externals import joblib
67+
joblib.dump(clf,'filename.pkl')
68+
...
69+
clf2=joblib.load('filename.pkl')
70+
```
71+
> `joblib.dump(...)`返回一个文件名的列表。因为每个`clf`对象包含的`numpy`数组可能较大,此时它可能会分散到多个文件中。
72+
73+
![persistence](../imgs/scikit_learn/0_persistence.JPG)
74+
75+
5.惯例: `scikit-learn estimator`遵守以下惯例:
76+
77+
- 除非显式指定数据类型,否则所有的输入数据都被转换成 `float64`
78+
- 回归问题的输出被转换成 `float64`;分类问题的输出不被转换
79+
- `estimator`的参数可以更新:
80+
- `estimator.set_params(...)`方法可以显式更新一个`estimator`的参数值
81+
- 多次调用`estimator.fit(...)`方法可以隐式更新一个`estimator`的参数值。最近的一次训练学到的参数会覆盖之前那次训练学到的参数值。

0 commit comments

Comments
 (0)