修改添加注释,逻辑回归和回归

This commit is contained in:
chenyyx
2017-07-06 20:03:50 +08:00
parent 8de61578d9
commit d526490cc6
3 changed files with 135 additions and 34 deletions

View File

@@ -19,7 +19,7 @@ def loadDataSet(file_name):
fr = open(file_name)
for line in fr.readlines():
lineArr = line.strip().split()
# 将 X0 的值设为 1.0
# 为了方便计算,我们将 X0 的值设为 1.0 ,也就是在每一行的开头添加一个 1.0 作为 X0
dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])
labelMat.append(int(lineArr[2]))
return dataMat,labelMat
@@ -57,6 +57,7 @@ def gradAscent(dataMatIn, classLabels):
# print 'weights====', weights
# n*3 * 3*1 = n*1
h = sigmoid(dataMatrix*weights) # 矩阵乘法
# print 'hhhhhhh====', h
# labelMat是实际值
error = (labelMat - h) # 向量相减
# 0.001* (3*m)*(m*1) 表示在每一个列上的一个误差情况,最后得出 x1,x2,xn的系数的偏移量
@@ -110,6 +111,17 @@ def stocGradAscent1(dataMatrix, classLabels, numIter=150):
# 可视化展示
def plotBestFit(dataArr, labelMat, weights):
'''
Desc:
将我们得到的数据可视化展示出来
Args:
dataArr:样本数据的特征
labelMat:样本数据的类别标签,即目标变量
weights:回归系数
Returns:
None
'''
n = shape(dataArr)[0]
xcord1 = []; ycord1 = []
xcord2 = []; ycord2 = []
@@ -146,8 +158,8 @@ def main():
# 因为数组没有是复制n份 array的乘法就是乘法
dataArr = array(dataMat)
# print dataArr
# weights = gradAscent(dataArr, labelMat)
weights = stocGradAscent0(dataArr, labelMat)
weights = gradAscent(dataArr, labelMat)
# weights = stocGradAscent0(dataArr, labelMat)
# weights = stocGradAscent1(dataArr, labelMat)
# print '*'*30, weights

View File

@@ -182,7 +182,6 @@ plt.show()
# Logistic Regression 3-class Classifier 逻辑回归 3-类 分类器
'''
print(__doc__)
import numpy as np
@@ -224,11 +223,11 @@ plt.xticks(())
plt.yticks(())
plt.show()
'''
# Logistic function 逻辑回归函数
# 这个类似于咱们之前讲解 logistic 回归的 Sigmoid 函数,模拟的阶跃函数
'''
print(__doc__)
import numpy as np
@@ -276,5 +275,7 @@ plt.xlim(-4, 10)
plt.legend(('Logistic Regression Model', 'Linear Regression Model'),
loc="lower right", fontsize='small')
plt.show()
'''