修改2,3,7的代码格式,去除特殊字符

This commit is contained in:
chenyyx
2017-08-23 22:37:34 +08:00
parent 0e77fb3158
commit bb8b807d07
4 changed files with 26 additions and 26 deletions

View File

@@ -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 = []

View File

@@ -28,7 +28,7 @@
#### 信息熵 & 信息增益
熵:
熵:
entropy指的是体系的混乱的程度在不同的学科中也有引申出的更为具体的定义是各领域十分重要的参量。
信息熵(香农熵):

View File

@@ -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算法权重计算公式](/images/7.AdaBoost/adaboost_alpha.png "AdaBoost算法权重计算公式")
> 测试算法:我们拥有两个数据集。在不采用随机抽样的方法下,我们就会对 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
# 马疝病数据集

View File

@@ -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