mirror of
https://github.com/apachecn/ailearning.git
synced 2026-05-07 14:13:14 +08:00
修改2,3,7的代码格式,去除特殊字符
This commit is contained in:
@@ -104,7 +104,7 @@ knn 算法按照距离最近的三部电影的类型,决定未知电影的类
|
||||
|
||||
将文本记录转换为 NumPy 的解析程序
|
||||
|
||||
```Python
|
||||
```python
|
||||
def file2matrix(filename):
|
||||
"""
|
||||
Desc:
|
||||
@@ -139,7 +139,7 @@ def file2matrix(filename):
|
||||
|
||||
> 分析数据:使用 Matplotlib 画二维散点图
|
||||
|
||||
```Python
|
||||
```python
|
||||
import matplotlib
|
||||
import matplotlib.pyplot as plt
|
||||
fig = plt.figure()
|
||||
@@ -166,7 +166,7 @@ $$\sqrt{(0-67)^2 + (20000-32000)^2 + (1.1-0.1)^2 }$$
|
||||
|
||||
归一化特征值,消除特征之间量级不同导致的影响
|
||||
|
||||
```Python
|
||||
```python
|
||||
def autoNorm(dataSet):
|
||||
"""
|
||||
Desc:
|
||||
@@ -202,7 +202,7 @@ def autoNorm(dataSet):
|
||||
|
||||
kNN 分类器针对约会网站的测试代码
|
||||
|
||||
```Python
|
||||
```python
|
||||
def datingClassTest():
|
||||
"""
|
||||
Desc:
|
||||
@@ -237,7 +237,7 @@ def datingClassTest():
|
||||
|
||||
约会网站预测函数
|
||||
|
||||
```Python
|
||||
```python
|
||||
def clasdifyPerson():
|
||||
resultList = ['not at all', 'in small doses', 'in large doses']
|
||||
percentTats = float(raw_input("percentage of time spent playing video games ?"))
|
||||
@@ -252,7 +252,7 @@ def clasdifyPerson():
|
||||
|
||||
实际运行效果如下:
|
||||
|
||||
```Python
|
||||
```python
|
||||
>>> kNN.classifyPerson()
|
||||
percentage of time spent playing video games?10
|
||||
frequent flier miles earned per year?10000
|
||||
@@ -294,7 +294,7 @@ You will probably like this person: in small doses
|
||||
|
||||
将图像文本数据转换为向量
|
||||
|
||||
```Python
|
||||
```python
|
||||
def img2vector(filename):
|
||||
returnVect = zeros((1,1024))
|
||||
fr = open(filename)
|
||||
@@ -309,7 +309,7 @@ def img2vector(filename):
|
||||
|
||||
在 Python 命令行中输入下列命令测试 img2vector 函数,然后与文本编辑器打开的文件进行比较:
|
||||
|
||||
```Python
|
||||
```python
|
||||
>>> testVector = kNN.img2vector('testDigits/0_13.txt')
|
||||
>>> testVector[0,0:31]
|
||||
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
|
||||
@@ -323,7 +323,7 @@ array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 1., 1., 1
|
||||
|
||||
> 测试算法:编写函数使用提供的部分数据集作为测试样本,如果预测分类与实际类别不同,则标记为一个错误
|
||||
|
||||
```Python
|
||||
```python
|
||||
def handwritingClassTest():
|
||||
# 1. 导入训练数据
|
||||
hwLabels = []
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
#### 信息熵 & 信息增益
|
||||
|
||||
熵:
|
||||
熵:
|
||||
熵(entropy)指的是体系的混乱的程度,在不同的学科中也有引申出的更为具体的定义,是各领域十分重要的参量。
|
||||
|
||||
信息熵(香农熵):
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
2. 再学习(boosting): 是基于所有分类器的加权求和的方法
|
||||
|
||||
|
||||
## 集成方法 场景
|
||||
## 集成方法 场景
|
||||
|
||||
目前 bagging 方法最流行的版本是: 随机森林(random forest)<br/>
|
||||
选男友:美女选择择偶对象的时候,会问几个闺蜜的建议,最后选择一个综合得分最高的一个作为男朋友
|
||||
@@ -94,10 +94,10 @@
|
||||
|
||||
```
|
||||
收集数据:提供的文本文件
|
||||
准备数据:转换样本集
|
||||
准备数据:转换样本集
|
||||
分析数据:手工检查数据
|
||||
训练算法:在数据上,利用 random_forest() 函数进行优化评估,返回模型的综合分类结果
|
||||
测试算法:在采用自定义 n_folds 份随机重抽样 进行测试评估,得出综合的预测评分
|
||||
训练算法:在数据上,利用 random_forest() 函数进行优化评估,返回模型的综合分类结果
|
||||
测试算法:在采用自定义 n_folds 份随机重抽样 进行测试评估,得出综合的预测评分
|
||||
使用算法:若你感兴趣可以构建完整的应用程序,从案例进行封装,也可以参考我们的代码
|
||||
```
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
0.0262,0.0582,0.1099,0.1083,0.0974,0.228,0.2431,0.3771,0.5598,0.6194,0.6333,0.706,0.5544,0.532,0.6479,0.6931,0.6759,0.7551,0.8929,0.8619,0.7974,0.6737,0.4293,0.3648,0.5331,0.2413,0.507,0.8533,0.6036,0.8514,0.8512,0.5045,0.1862,0.2709,0.4232,0.3043,0.6116,0.6756,0.5375,0.4719,0.4647,0.2587,0.2129,0.2222,0.2111,0.0176,0.1348,0.0744,0.013,0.0106,0.0033,0.0232,0.0166,0.0095,0.018,0.0244,0.0316,0.0164,0.0095,0.0078,R
|
||||
```
|
||||
|
||||
> 准备数据:转换样本集
|
||||
> 准备数据:转换样本集
|
||||
|
||||
```python
|
||||
# 导入csv文件
|
||||
@@ -135,9 +135,9 @@ def loadDataSet(filename):
|
||||
return dataset
|
||||
```
|
||||
|
||||
> 分析数据:手工检查数据
|
||||
> 分析数据:手工检查数据
|
||||
|
||||
> 训练算法:在数据上,利用 random_forest() 函数进行优化评估,返回模型的综合分类结果
|
||||
> 训练算法:在数据上,利用 random_forest() 函数进行优化评估,返回模型的综合分类结果
|
||||
|
||||
* 样本数据随机无放回抽样-用于交叉验证
|
||||
|
||||
@@ -209,7 +209,7 @@ def get_split(dataset, n_features):
|
||||
for row in dataset:
|
||||
groups = test_split(index, row[index], dataset) # groups=(left, right), row[index] 遍历每一行 index 索引下的特征值作为分类值 value, 找出最优的分类特征和特征值
|
||||
gini = gini_index(groups, class_values)
|
||||
# 左右两边的数量越一样,说明数据区分度不高,gini系数越大
|
||||
# 左右两边的数量越一样,说明数据区分度不高,gini系数越大
|
||||
if gini < b_score:
|
||||
b_index, b_value, b_score, b_groups = index, row[index], gini, groups # 最后得到最优的分类特征 b_index,分类特征值 b_value,分类结果 b_groups。b_value 为分错的代价成本
|
||||
# print b_score
|
||||
@@ -249,7 +249,7 @@ def random_forest(train, test, max_depth, min_size, sample_size, n_trees, n_feat
|
||||
return predictions
|
||||
```
|
||||
|
||||
> 测试算法:在采用自定义 n_folds 份随机重抽样 进行测试评估,得出综合的预测评分。
|
||||
> 测试算法:在采用自定义 n_folds 份随机重抽样 进行测试评估,得出综合的预测评分。
|
||||
|
||||
* 计算随机森林的预测结果的正确率
|
||||
|
||||
@@ -313,7 +313,7 @@ def evaluate_algorithm(dataset, algorithm, n_folds, *args):
|
||||
|
||||
`能否使用弱分类器和多个实例来构建一个强分类器? 这是一个非常有趣的理论问题。`
|
||||
|
||||
### AdaBoost 原理
|
||||
### AdaBoost 原理
|
||||
|
||||
> AdaBoost 工作原理
|
||||
|
||||
@@ -360,8 +360,8 @@ def evaluate_algorithm(dataset, algorithm, n_folds, *args):
|
||||
准备数据:确保类别标签是+1和-1,而非1和0。
|
||||
分析数据:手工检查数据。
|
||||
训练算法:在数据上,利用 adaBoostTrainDS() 函数训练出一系列的分类器。
|
||||
测试算法:我们拥有两个数据集。在不采用随机抽样的方法下,我们就会对 AdaBoost 和 Logistic 回归的结果进行完全对等的比较。
|
||||
使用算法:观察该例子上的错误率。不过,也可以构建一个 Web 网站,让驯马师输入马的症状然后预测马是否会死去。
|
||||
测试算法:我们拥有两个数据集。在不采用随机抽样的方法下,我们就会对 AdaBoost 和 Logistic 回归的结果进行完全对等的比较。
|
||||
使用算法:观察该例子上的错误率。不过,也可以构建一个 Web 网站,让驯马师输入马的症状然后预测马是否会死去。
|
||||
```
|
||||
|
||||
> 收集数据:提供的文本文件。
|
||||
@@ -468,13 +468,13 @@ D (特征权重)的目的是为了计算错误概率: weightedError = D.T*
|
||||
|
||||

|
||||
|
||||
> 测试算法:我们拥有两个数据集。在不采用随机抽样的方法下,我们就会对 AdaBoost 和 Logistic 回归的结果进行完全对等的比较。
|
||||
> 测试算法:我们拥有两个数据集。在不采用随机抽样的方法下,我们就会对 AdaBoost 和 Logistic 回归的结果进行完全对等的比较。
|
||||
|
||||
```python
|
||||
def adaClassify(datToClass, classifierArr):
|
||||
"""adaClassify(ada分类测试)
|
||||
Args:
|
||||
datToClass 多个待分类的样例
|
||||
datToClass 多个待分类的样例
|
||||
classifierArr 弱分类器的集合
|
||||
Returns:
|
||||
sign(aggClassEst) 分类结果
|
||||
@@ -493,7 +493,7 @@ def adaClassify(datToClass, classifierArr):
|
||||
return sign(aggClassEst)
|
||||
```
|
||||
|
||||
> 使用算法:观察该例子上的错误率。不过,也可以构建一个 Web 网站,让驯马师输入马的症状然后预测马是否会死去。
|
||||
> 使用算法:观察该例子上的错误率。不过,也可以构建一个 Web 网站,让驯马师输入马的症状然后预测马是否会死去。
|
||||
|
||||
```python
|
||||
# 马疝病数据集
|
||||
|
||||
@@ -99,7 +99,7 @@ def get_split(dataset, n_features):
|
||||
for row in dataset:
|
||||
groups = test_split(index, row[index], dataset) # groups=(left, right), row[index] 遍历每一行 index 索引下的特征值作为分类值 value, 找出最优的分类特征和特征值
|
||||
gini = gini_index(groups, class_values)
|
||||
# 左右两边的数量越一样,说明数据区分度不高,gini系数越大
|
||||
# 左右两边的数量越一样,说明数据区分度不高,gini系数越大
|
||||
if gini < b_score:
|
||||
b_index, b_value, b_score, b_groups = index, row[index], gini, groups # 最后得到最优的分类特征 b_index,分类特征值 b_value,分类结果 b_groups。b_value 为分错的代价成本
|
||||
# print b_score
|
||||
|
||||
Reference in New Issue
Block a user